WordPressで常時https(SSL)化する
どうもユーキです。
この間までなぜかWordPressサイトでhttpsリダイレクトが一部だけがうまくいってなくてどういうこと?っとなったので備忘録として記載しておきます。
常時https化する手順
※すでにSSL証明書の設定は終わっている前提です。
色々調べると以下を貼り付ければOKということだったので、早速.htaccessの一番下に貼り付けてみました。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
http://tnyk.jp/xxxxx/ という固定ページにアクセスしてみたところ、おぉうまくいってるな!となり放置しておりました。
つい先日http://tnyk.jp/category/postname/ にアクセスして見たらあれれhttpsにならないぞ…?
それで色々調べてみたところ、書く順番がおかしかったみたいです。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
こんなかんじで、WordPressのデフォルトの設定で書かれてると思うのですが、この記述の上にかかないとだめということでした。
簡単なミスですが普通に仕事だと致命的なミスだと思うのでみなさんも気をつけてください。
# ---------- BEGIN Force https ----------
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# ---------- END Force https ----------
# ---------- 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 ----------
わかりやすいようにコメントアウトも追加しておきました。
SSLの記述を書くときは上ですよ。上に!!書く!!