さくらインターネットでは、WordPressの常時SSL化を簡単に実現出来るプラグインが提供されていますが、このプラグインが期待した通りの動作をしなかった問題が発生しました。その際、対応したことについてメモしておきます。
発生した環境
- サブディレクトリにインストール(example.com/wp/)
- サイトアドレスはドメインルート(example.com/)
発生した問題
httpでアクセスした際にhttpsへリダイレクトされない
再現手順
- サブディレクトリにWordPressをインストール
- SAKURA RS WP SSLプラグインを有効化
- HTTPアクセス時にHTTPSへのリダイレクトを確認
- WordPress一般設定のサイトアドレスからサブディレクトリを削除して保存
- ルートディレクトリ内に生成されたindex.phpと.htaccessの存在を確認
- ルートディレクトリ内のindex.phpを編集(“Loads the WordPress Environment and Template”のパス)
- ドメインルートでのアクセス可能を確認
- HTTPアクセス時にHTTPSへリダイレクトされない
対処方法
サブディレクトリ内.htaccessの、SAKURA RS WP SSLによって記述された内容をルートディレクトリ内の.htaccessに移動させました。また、プラグインを無効化しました。
※ついでにwww有り無し正規化の為のリダイレクト設定も追記
.htaccecc
“#BEGIN Force SSL for SAKURA”から”END SAKURA Internet Inc.”までが、SAKURA RS WP SSLプラグインの有効化によって記述される部分です。
# www無しを、www有りにリダイレクト ※おまけです。逆の場合もあるでしょう
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# BEGIN Force SSL for SAKURA
# 常時HTTPS化(HTTPSが無効な場合リダイレクト)
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# END Force SSL for SAKURA
# BEGIN SAKURA Internet Inc.
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
ExpiresActive On
<FilesMatch "\.(css|js)$">
ExpiresDefault "access plus 1 week"
<FilesMatch "\.(gif|jpe?g|png)$">
ExpiresDefault "access plus 1 month"
# END SAKURA Internet Inc.