.htaccessでSSLとwwwを強制する


12

SSLとを強制する方法を探していwwwます。

両方を個別に強制することができましたが、一緒にリダイレクトの問題が発生し続けます。次のコードは、この形式のURLを処理するときにhttp://example.com機能します。適切にリダイレクトされhttps://www.example.comますが、受信URLの場合はhttps://example.com転送されませんhttps://www.example.com-提案はありますか?

編集:それはまたに送信http://www.example.comする必要がありますhttps://www.example.com

RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

回答:


7

最初の行は、内部URLが書き換えられないようにするために使用されます。別のページが表示される可能性があるため、削除しました。

ホストがexample.comHTTPS経由で要求されている場合、または要求されていない場合は、に書き換えられhttps://example.com/ます。つまりhttp://example.comhttp://www.example.comhttps://example.comhttps://www.example.com1回のアクションで書き換えます。

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Apache 2.2のmod_rewriteに関するドキュメント

のようなサブドメインがあるforum.example.com場合、最初のルールはそのままです。それ以外の場合は、否定的な一致を行うこともできますwww.example.com



0

これを試して:

RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

0

また、私が使用して問題なく動作する次の行を使用することもできます。

(CloudFlareを使用しない場合は、先頭のRewriteCondを削除してください)

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

0

私のサイトにこれを実装しました。魅力的な作品!.htaccessファイルの先頭に追加されました。wwwを入力しているかwwwを入力していないすべてのインスタンスをリダイレクトします。

# BEGIN HTTPS Redirect
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
# END HTTPS Redirect

0

上記のすべての提案をテストしましたが、シナリオ全体をカバーするものはありませんでした。

来場者全員に行って欲しかった https://www.example1.com/

他のユーザーから提供されたコードの一部は、非セキュアまたはwww以外のURLをに取得するように機能しましたが、「www」に変換することhttps://www.example1.com/もできませんでしたhttps://example1.com

私は自分のウェブサイトをGoDaddyでホストしています。

これは私のために働いたコードです:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www.example1\.com$ [OR]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example1.com/$1 [L,R=301]

最後の行も次のようになります。

RewriteRule ^(.*)$ https://www.example1.com/$1 [R,L]

しかし、Googleや他の検索エンジンが古いリンクを更新することを期待して、コード「301」を使用して「完全に移動しました」というメッセージを送信しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.