【備忘録】WordPressの常時SSL化で.htaccessでリダイレクト設定してもトップページ以外リダイレクトが効かない時の対処法
トップページが問題なかったのですっかり油断していました。。。
WordPressを使用しているサイトを
常時SSL(https)化して.htaccessにリダイレクト設定をしたのですが
トップページではhttpからhttpsへリダイレクトしますが
下層ページではhttpのままリダイレクトされない。。。
この対処法を調べてみました。
原因は.htaccessの記述順
.htaccessを開くと下記の記述がありました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> |
# BEGIN WordPress~# END WordPressは
WordPressが吐き出している記述。
その下はリダイレクト設定の記述です。
対処法:記述の順番を変える
WordPressが吐き出している記述の上にリダイレクトの設定を書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} !=on [NC] 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 |
これで下層ページもhttpからhttpsへリダイレクトされるようになりました。
複数WordPressをインストールしている場合はそれぞれに記述する
例えば本体サイトとブログでサーバー内に それぞれWordPressをインストールしている場合もあるかと思います。
このような場合は「/blog/」の中の.htaccessにもリダイレクト設定を記述しなければ ブログもトップページ以外リダイレクトが効かない状態でした。
これで「/blog/」の下層ページもhttpからhttpsへリダイレクトされるようになりました。
常時SSL化を行う場合は一度.htaccessを確認することを肝に銘じておきます。。。
▼参考にさせていただきました。ありがとうございました。
この記事の投稿者
taka
Webサイト作ってます。
最近のモットー「決して無理をしないスタイル」
twitter: @taka_sbs