web-dev-qa-db-ja.com

htaccessを使用してhttpsを強制し、wwwを強制しない

この質問は何百万回も前に尋ねられましたが、私の問題は、使用するコードに関係なく、これがまだ機能しないということです。

これは私の現在の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
user49815

これを使って。 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 /

5
Mike

以下を使用することもできます。

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]
1
itteam

私は多くの異なる設定とルールを試しましたが、私にとって有効な唯一の防弾ソリューションは次のとおりです。

    # 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を使用しますが、これは完全に機能し、提供されている他のすべての例ではリダイレクトループが発生したか、解決できませんでした。

1
Simon Ilett