基本的に私が欲しいのはhttpの代わりにHTTPSを使用するためにリダイレクトリクエストです
これまでのところhtaccessにあり、うまく機能しました:コード:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
</ifModule>
今日、誰かが次の場所に移動したときに気づきました: http://www.example.com リダイレクトされ、安全でない接続が表示されます。
私のsslはwww以外のドメイン用にセットアップされています:mydomain.com
だから私はすべてのサイトリクエストがwwwとhttps以外に送信されることを確認する必要があります:example.comを置くとそれはうまくいきます https://example.com にリダイレクトします
しかし、www.example.comを使用すると、htts://www.example.comに移動してエラーが表示されます
wwwを非wwwにリダイレクトしてからsslにリダイレクトするには、コードに何を追加する必要がありますか?
HTTP_Hostから必要なものを取得できます
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]
このようにして、サブドメインなしで常にホストを取得します。
Wwwとwwwなしの両方で証明書を再発行する必要があります。
誰かがあなたの共通名に含まれていないドメイン名を介してあなたのサイトに接続すると、彼らは警告を受け取ります。
Sslネゴシエーションプロセスはbeforeサーバーからのすべての応答(あなたの場合、リダイレクト)が発生するため、すべての場合において、共通名にないドメインを使用すると、訪問者は警告を受け取ります。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://domain.com%{REQUEST_URI} [L,R=301,NC]
RewriteCond %{HTTP_Host} ^www.domain.com [NC]
RewriteRule (.*) https://domain.com%{REQUEST_URI} [L,R=301,NC]
CloudFlareの無料アカウントを使用している場合は、それが問題です。 CloudFlareの無料アカウントはSSL証明書をサポートしていません。 SSL証明書でCloudFlareの無料アカウントを引き続き使用するには、CloudFlareのDNS設定に移動し、オレンジ色のクラウドをドメインとcname WWWから削除します。これで問題が解決し、wwwと非wwwの両方がhttpsにリダイレクトされます。
また、このコードを.htaccessファイルに必ず追加してください。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
その後、すべてが機能するはずです!
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://www.%1%{REQUEST_URI} [L,R=301]
これをチェックしてください:
RewriteEngine On
RewriteCond %{HTTP_Host}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC]
RewriteRule ^ http%2://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]