Posted at

さくらサーバーのWordPressを常時SSLにしたときの備忘録

More than 1 year has passed since last update.

さくらサーバーにて、SSL化した際にリダイレクト処理でwww有りにさせたくて悩んだので、その覚書です。

WordPress側では、「さくらのレンタルサーバ 簡単SSL化プラグイン」でSSL化は済みますが、リダイレクト処理がどっちでも使えるものなので、ここは書き直す必要がある。

プラグインを有効化して、設定が済んださいの.htaccessです。


.htaccess

# BEGIN Force SSL for SAKURA

# RewriteしてもHTTPS環境変数を有効にする
SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1

# 常時HTTPS化(HTTPSが無効な場合リダイレクト)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteCond %{REQUEST_URI} !/wp-cron\.php$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# END Force SSL for SAKURA



変更した.htaccess


.htaccess

# BEGIN Force SSL for SAKURA

# RewriteしてもHTTPS環境変数を有効にする
SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1

# 常時HTTPS化(HTTPSが無効な場合リダイレクト)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteCond %{REQUEST_URI} !/wp-cron\.php$
RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

# wwwが付いてなかったら、wwwを付けるようにする
RewriteCond %{ENV:HTTPS} on
RewriteCond %{REQUEST_URI} !/wp-cron\.php$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
</IfModule>
# END Force SSL for SAKURA


HTTPSがONの時にリダイレクトがかからなかったので、ONの状態のルールを複製した。

あと、RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$これもちゃんと追加する。これないとリダイレクトループが発生します。

.htaccessを編集したあと、今度はwp-config.phpファイルにサーバー変数を書く必要があるので、それも追加する。


wp-config.phpの編集


wp-config.php

if (isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']))

{
$_SERVER['HTTPS'] = 'on';
$_SERVER['HTTP_HOST'] = 'www.example.com';
$_SERVER['SERVER_NAME'] = 'www.example.com';
$_ENV['HTTPS'] = 'on';
$_ENV['HTTP_HOST'] = 'www.example.com';
$_ENV['SERVER_NAME'] = 'www.example.com';
}

久々にさくらサーバーさんで構築したので、仕様が全然分かってなかった(´・ω・)