# WordPressの常時SSL化で、下層ページのhttpからhttpsへのリダイレクトがうまくいかない場合に確認すること URL: https://webrandum.net/wordpress-ssl-redirect-error/ 公開日: 2019-07-06 更新日: 2020-04-05 カテゴリー: コーディング 出典: Webrandum(著者: サイトウ マサカズ) WordPressの常時SSL化をするとき、リダイレクトの設定でつまづいたので、メモしておきます。 ## 下層ページがhttpsにリダイレクトされない httpからhttpsへのリダイレクト設定は.htaccessに記述します。 ``` RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ``` 本来はこの記述で、全てのページがhttpからhttpsへリダイレクトされるようになるはずです。 しかし、サイトを確認してみると、下層ページがリダイレクトされません(トップページはリダイレクトされるが、index.phpをつけるとリダイレクトされない)。 ### 原因はリダイレクト設定を書く位置 どうやらリダイレクト設定の位置が悪かったらしく、`# BEGIN WordPress`と書かれた行より上にリダイレクト設定を書かないといけないようです。 ``` RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress ``` この順番を逆にしてしまうと、先にWordPressの`# BEGIN WordPress`から`# END WordPress`の処理が適応されて.htaccessが終了してしまいます。 トップページはちゃんとリダイレクトされるので、トップページだけ確認して設定ができたと勘違いしてしまいそうです。 また、こういった後から追加するコードは、下へ下へ追加していくイメージだったので、注意する必要がありますね。 気をつけましょう。