0

私はそれをすべて試しました!

これ:

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]

最初にhttpを入れない場合にのみ機能します

それを機能させるにはどうすればよいですか:httpがある場合はhttpsにリダイレクトし、wwwがある場合は非wwwにリダイレクトします

http://www.domain.com -> https://domain.com
www.domain.com --> https://domain.com
http://domain.com --> https://domain.com

およびクエリの後のすべてのサブフォルダーで!

4

1 に答える 1

2

あなたも欲しいと思います

https://www.domain.com -> https://domain.com

これを機能させたことがありますか?これを再確認するためのテスト https サイトを取得するのに問題があります。

それまでの間、私はいくつかのことを見ているので、代わりにこれを試してください(これは isapi_rewrite v3 を想定しており、使用しているようです):

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*)$ https://%1$1 [NC,R=301]

これにより、RewriteRule に括弧が追加され、$1 の URL が取得されます。

$1 キャプチャの先頭にスラッシュがあるため、%1$1 間のスラッシュは必要ありません。

大文字と小文字を区別しないために NC を使用するのが好きです。R 規則は最終的な規則なので、最後に L は必要ありません。

編集

上記の元の回答のいくつかの二次的な問題を更新/明確化するために、この回答を再検討しました。これらは、キャプチャを行うために括弧を追加するという上記の主な解決策を変更しません。

オリジナル:

$1 キャプチャの先頭にスラッシュがあるため、%1$1 間のスラッシュは必要ありません。

これは実際には、ルールがどこにあるか、およびRewriteBaseステートメントがあるかどうかによって異なります。一般的な共有ホスト構成では、ルールの先頭にスラッシュがないため、スラッシュが必要になります。よくわからない場合は、ありとなしで試すことができます。

オリジナル:

大文字と小文字を区別しないために NC を使用するのが好きです。R 規則は最終的な規則なので、最後に L は必要ありません。

のように、パフォーマンスのために L と R を併用すると便利であることがわかり[NC,R=301,L]ます。私は実際、この質問の 1 年前に Helicon Tech でこれを尋ねていましたが、忘れていました :
http://www.helicontech.com/forum/14826-Does_Redirect_need_Last.html

... 301 リダイレクト ルールで [L] を使用する理由は、リダイレクトがすぐに行われないためです。ルールが一致しても、[L] がない限り、さらにルールが処理 (実行) されます....

于 2011-07-24T01:55:54.863 に答える