さくら WordPress サブドメインSSL化

さくらサーバで、マルチドメインで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化プラグインからパクったのを少し修正した。

# 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_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/

if (isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) && ($_SERVER['HTTP_HOST'] !== 'blog.XXXX.jp')) {
  // '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!

コメントを残す

役立つ
面白い

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です