この質問は何百万回も前に尋ねられましたが、私の問題は、使用するコードに関係なく、これがまだ機能しないということです。
これは私の現在のhtaccessであり、wwwを正常に削除しますが、httpsはまったく機能しません。要求されたURLがwwwまたはhttpを使用している場合、すべてのトラフィックをhttps://example.com
にリダイレクトするようにします。助けてください?本当にありがとう!
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_Host} !^example.com
RewriteRule ^(.*)$ https://example.com/$ [L,R=301]
これを使って。 2つの頭痛からあなたを救うはずです。
RewriteEngine On
RewriteCond %{HTTP_PORT} 80 [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
これにより、 http://www.example.com/ で始まるURL、またはポート80(標準のWebポート)に接続して https:// example。 com /
以下を使用することもできます。
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_Host} !^domain-name.tld$ [NC]
RewriteRule ^(.*)$ https://domain-name.tld/$1 [L,R=301]
私は多くの異なる設定とルールを試しましたが、私にとって有効な唯一の防弾ソリューションは次のとおりです。
# 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番目のリダイレクトを防ぐため、順序が重要です。
サブドメインの場合、単に使用します
# match non https and redirect to https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]
Cloudflareと組み合わせたCloudwaysを使用しますが、これは完全に機能し、提供されている他のすべての例ではリダイレクトループが発生したか、解決できませんでした。