SSL証明書対応+www付きのドメインにリダイレクトさせる設定をしていたところ
何故かwwwが付かず、且つSSLが適用されずエラーが発生する問題に遭遇
設定を確認する
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^chinjaolose\.co\.jp$
RewriteRule ^(.*)$ https://www.chinjaolose.co.jp/$1 [R=301,L]
合ってるのではないのか
マークをクリックしてSSL証明書を確認
サブジェクト名:*.chinjaolose.co.jp
「*」って何〜?
調べたところSSLの適用範囲が chinjaolose.co.jp のサブドメインに対してのみらしい。
なのでネイキッドドメイン「chinjaolose.co.jp」に対してはSSLが無効(というかなりすましみたいな扱い)になってしまうようである。
改めて確認してみる
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^chinjaolose\.co\.jp$
RewriteRule ^(.*)$ https://www.chinjaolose.co.jp/$1 [R=301,L]
http://chinjaolose.co.jp でアクセスした場合のリダイレクトの順番としては
1.httpにsがついてない
→sを付けてリダイレクト(https://chinjaolose.co.jp)
2.ホスト名がchinjaolose.co.jpである
→wwwを付けてリダイレクト
となるのだが、1の段階でchinjaolose.co.jpにはSSLが適用されないので
リダイレクトが中断してエラーになってしまうようである。
対応策
灯台なんとやらでこうすれば良かった
# RewriteCond %{HTTPS} off
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# RewriteCond %{HTTP_HOST} ^chinjaolose\.co\.jp$
# RewriteRule ^(.*)$ https://www.chinjaolose.co.jp/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^chinjaolose\.co\.jp
RewriteRule ^(.*) https://www.chinjaolose.co.jp/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
SSLが有効なドメインに対してリダイレクトを掛けた後にhttps を付けてあげる
逆にしただけ
終わり。