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年から専門学校でデザインを学び、卒業後は神戸の制作会社でWeb制作に従事しています。Webrandumは2016年から運営し、ウェブデザイン、フロントエンド開発、WordPress、CSS、JavaScript、制作環境の効率化を中心に、実際に試した内容を執筆しています。

Twitterをフォロー Facebookでいいね