htaccess を https://www にリダイレクトする 質問する

htaccess を https://www にリダイレクトする 質問する

次の htaccess コードがあります:

<IfModule mod_rewrite.c>

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

</IfModule>

サイトをhttps://www.HTTPS でリダイレクトし、www.サブドメインを強制したいのですが、アクセスしても(HTTPS なしで) HTTPS でhttp://www.リダイレクトされません。https://www

ベストアンサー1

最初に HTTPS を強制するには、正しい環境変数 を確認する必要があります%{HTTPS} offが、上記のルールでは が先頭に追加されます。www.強制する 2 番目のルールがあるためwww.、最初のルールでは を使用しないでください。

RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

プロキシについて

クライアントが HTTPS 経由でプロキシ、ロード バランサ、Passenger アプリケーションなどに接続している、何らかの形式のプロキシの背後にある場合、変数は%{HTTPS}存在せずon、書き換えループが発生する可能性があります。これは、クライアントとプロキシ/ロード バランサが HTTPS を使用しているにもかかわらず、アプリケーションが実際にはプレーン HTTP トラフィックを受信して​​いるためです。このような場合は、変数X-Forwarded-Protoではなくヘッダーを確認してください%{HTTPS}この回答は適切なプロセスを示しています

おすすめ記事