SSL化が当たり前になってきてWordPressをSSL対応させる場面は多いかと思います。
その対応作業の中に「常時SSL化」という事項があります。セキュアではないURLスキーム「http」でアクセスされても「https」という形にリダイレクトさせる内容ですね。
“.htaccess”ファイルで常時SSL化させる
プラグインによる対応方法もありますが、モノによってはPHPプログラムによるリダクレイトをしています。なるべく軽い処理をさせるべく「.htaccess」ファイルで対応しましょう。
.htaccessファイルに以下の記述を追加するのみです。
<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」の上に追記します。1行目から5行目までを追加します。これで常時SSL化対応となります。
WordPressのリライトルールにまとめて記述しない理由
(Apache上で動いていること前提ですが).htaccessに最初から記述されてある「# BEGIN WordPress~# END WordPress」のコメント内に追記しない理由は、WordPressのパーマリンク設定を変更すると同時に書き換えられてしまうからです。
極端な例を挙げますと、WordPressのパーマリンク設定をデフォルトの「基本」にすると以下のようになります。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# BEGIN WordPress
# END WordPress
このように空欄になってしまうのです。なので、分離して記述しています。
参考:htaccessでHTTPSにリダイレクトする – Qiita
参考の記事とほぼ同じ内容なのですが、毎度忘れては調べているので、ある意味参考記事のメモ用です。(それでもWordPress用に記述しております。)
参考URLの方はロードバランサを使用している場合の記述方法もあるのでリスペクトも含めて読んでおくことをオススメいたします。