私は自分のウェブサイト上でHSTSを正しく設定しようとしています、そしてそれは現在「中途半端」で、リダイレクトする正しい方法を見つける必要があります:http://www.example.com
からhttps://www.example.com
へ、そして最後にhttps://example.com
へ。
実際、WebサイトにはURLバージョンごとに1つのリダイレクトがあります。
http://www.example.com
301はhttps://example.com/
にリダイレクトします
http://example.com
301はhttps://example.com/
にリダイレクトします
https://www.example.com
301はhttps://example.com/
にリダイレクトします
私は今私の.htaccess
を通してリダイレクトを調整する必要があります。
http://www.example.com
https://www.example.com
https://example.com
"私は数回試したが、私はいつもウェブサイトをシャットダウンすることになる。これを直すのを手伝ってください。
私はすでにHSTSをインストールしていてexample.com
でテストしていますが、www.example.com
としてテストすると「エラー:サブドメイン、エラー:HSTSヘッダーなし、エラー:HTTPはHTTPSにリダイレクトされません」と表示されます。 hstspreload.orgでテストしています
そのため、正規のURLはhttps://example.com/...
です。 (あなたは無意味な中間リダイレクトを記述しているように見えますか?あなたは最後のcanonical URLにのみリダイレクトすべきです、その間に何もする必要はありません。)
これは単なる標準のHTTPからHTTPSへのリダイレクトです。
.htaccess
ファイルの先頭にあるmod_rewriteを使ってこれを行うことができます。例えば:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} ^www\.
RewriteRule (.*) https://example.com/$1 [R=301,L]
上記の内容は、リクエストがHTTPまたはwwwサブドメインに対するものである場合、301は正規のURLにリダイレクトされます。
ただし、HSTSを実装する302(一時的な)リダイレクトbeforeでこれをテストする必要があります。すでにHSTSを実装してHTTPS URLにアクセスしている場合は、ブラウザが自動的にアップグレードされたリクエストを発行し、リダイレクトは表示されません(HSTSのポイントです)。
更新:
エラー:HTTPはHTTPSにリダイレクトされません
http://www.example.com
(HTTP)はhttps://example.com/
にリダイレクトします。http://example.com
からの最初のリダイレクトは、同じホスト上の安全なページへのリダイレクト(https://www.example.com
) "
ああ、 HSTSプリロードリスト を得るために Submission Requirements を満たすためには、最初に "同じホスト上でHTTPからHTTPSへリダイレクト"する必要があるようです。 (ただし、これはSEOとユーザーエクスペリエンスに関しては直感に反するように思われます。)
正規のwwwリダイレクトの前にリダイレクトを2つに分割してHTTPS firstにリダイレクトするには、代わりに次のようにします。
RewriteEngine On
// 1. Redirect to HTTP to HTTPS on the same Host
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}/$1 [R=301,L]
// 2. Canonical redirect from www to non-www
RewriteCond %{HTTP_Host} ^www\. [NC]
RewriteRule (.*) https://example.com/$1 [R=301,L]
HSTSプリロードリストに正規のリダイレクトを発行することに関する追加の注意事項については、Pro Webmastersスタックの次の質問に対する my answer を参照してください。
https://webmasters.stackexchange.com/questions/112263/hsts-preload-section-on-htaccess