SSL対応したWordPressを.htaccessファイルで常時SSL化

  • 更新日:
  • 公開日:

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の方はロードバランサを使用している場合の記述方法もあるのでリスペクトも含めて読んでおくことをオススメいたします。

書いた人

Symbol Mark

Ryoichi(しつ)

除菌ティッシュを買い込んで使いきれずによく乾かす人。

療養目的で退職し、どうやって生きていくか模索中。最近は勉強目的でLaravelやVue.js弄ったり、趣味で音で遊んでます。

※2019年10月16日現在ブログリニューアル中です。崩れなどが発生していたらすみません。

うぇぶ: @s_ryone