さくらサーバで、マルチドメインでWordpressを運用して、後からSSL化したときの覚書です。(スマートな方法なのか?分からないが何となくうまく行った。)
■やりたいこと
マルチドメイン2つ(サブドメインで構成)のうち、wwwの方のみSSL化したい。
・www.XXXX.jp
・blog.XXXX.jp
(1) まずは、さくらでRapidSSLを申請してSSL化する。
注意点
・RapidSSL申請のときは、www付き(www.XXXX.jp)で申請する。
・ドメイン設定にて「XXXX.jp」の方だけSNI設定する。
(2) 取りあえず、SSLが有効か調べる。
・ワードプレスをインストールしたディレクトリ(wp-config.phpと同じディレクトリ)に、適当にhtmlファイル(test.htmlなど)を作る。
・www付、www無しでhttpsでアクセスしてみる。
https://XXXX.jp/test.html
https://www.XXXX.jp/test.html
(3) データベースで直接optionsテーブルを修正
・「siteurl」、「home」、「fileupload_url」のURLをhttpsにする。マルチサイトなのでoptionsテーブルは複数あるが、https化したい方のテーブルのみ変更する。
(4) .htaccessを修正
・www.XXXX.jpのときのみ、httpsにリダイレクトする。
・さくら用のWordpressをSSL化プラグインからパクったのを少し修正した。
# 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_HOST} ^www\.XXXX\.jp
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# END Force SSL for SAKURA
(5) www.XXXX.jpに接続した時にループするので、wp-config.phpを修正
参考:https://www.craneto.co.jp/archives/409/
// 'www.example.com' はダミーにつき置き換えください
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
$_SERVER['HTTP_HOST'] = 'www.XXXX.jp';
$_SERVER['SERVER_NAME'] = 'www.XXXX.jp';
$_ENV['HTTP_HOST'] = 'www.XXXX.jp';
$_ENV['SERVER_NAME'] = 'www.XXXX.jp';
}
以上です。
※ダッシュボードもちゃんとwww.XXXX.jpは、httpsでOKでした。blog.XXXX.jpのダッシュボードは、通常のhttp接続でOK!