21

ユーザーを強制的に非 www Web サイトにリダイレクトさせ、強制的に https にしようとしています。

私はこのような仕事をしていますが、http が入力されたときに https を強制しません。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://site.com\.net/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

私が間違っていることについてのアイデアはありますか?

4

4 に答える 4

48

このルールを試してください:

RewriteCond %{HTTP_HOST} ^(www\.)(.+) [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]
于 2011-06-14T16:59:18.563 に答える
5

Gumbo のコメントに基づいて:「TLS/SSL 接続が確立され、HTTP に渡される前に証明書が検証され、HTTP リダイレクトが行われます」これを試してみました (これはうまくいくようです):

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.blahblah.com/$1 [R,L]

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

このアプローチに何か問題があるかどうか教えてください。

于 2014-09-11T23:23:53.820 に答える
3

私にとって機能する唯一のルールセットは次のとおりです

# match any URL with www and rewrite it to https without the www
    RewriteCond %{HTTP_HOST} ^(www\.)(.*) [NC]
    RewriteRule (.*) https://%2%{REQUEST_URI} [R=301,L]

# match non https and redirect to https
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

順序は重要です。場合によっては、3 回目のリダイレクトが妨げられます。

于 2016-10-12T01:44:37.020 に答える