WebDesigner's Memorandumウェブデザイナーの備忘録

WordPressの常時SSL化で、下層ページのhttpからhttpsへのリダイレクトがうまくいかない場合に確認すること

WordPressの常時SSL化をするとき、リダイレクトの設定でつまづいたので、メモしておきます。

下層ページがhttpsにリダイレクトされない

httpからhttpsへのリダイレクト設定は.htaccessに記述します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

本来はこの記述で、全てのページがhttpからhttpsへリダイレクトされるようになるはずです。
しかし、サイトを確認してみると、下層ページがリダイレクトされません(トップページはリダイレクトされるが、index.phpをつけるとリダイレクトされない)。

原因はリダイレクト設定を書く位置

どうやらリダイレクト設定の位置が悪かったらしく、# BEGIN WordPressと書かれた行より上にリダイレクト設定を書かないといけないようです。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

この順番を逆にしてしまうと、先にWordPressの# BEGIN WordPressから# END WordPressの処理が適応されて.htaccessが終了してしまいます。

トップページはちゃんとリダイレクトされるので、トップページだけ確認して設定ができたと勘違いしてしまいそうです。
また、こういった後から追加するコードは、下へ下へ追加していくイメージだったので、注意する必要がありますね。

気をつけましょう。

著者について

プロフィール画像

サイトウ マサカズ@31mskz10

1997年生まれ。2016年から専門学校でデザインについて勉強。卒業後は神戸の制作会社「N'sCreates」にウェブデザイナーとして入社。このブログでは自分の備忘録も兼ねて、ウェブに関する記事や制作環境を効率的に行うための記事を書いています。

Twitterをフォロー Facebookでいいね