WordPressカスタマイズ事例

さくらインターネットのSNI SSLを利用して、URLが常時 https://~ なサイトをWordPressで作る方法

コストパフォーマンスがよろしい、ということで、さくらインターネットをWebサーバとしてご利用になるクライアントが多いのですが、WordPressをやっているとさくら独特の”クセ”に遭遇して困ることもあります。(他のレンサバ会社についても、その会社なりの”クセ”はあって、それはどこの会社でも同じことで仕方ないことだとも思います)
 
特に困ったのがSNI SSLという安いプランで使えるSSLなんですが、これの仕様がすごい。
何の説明もされないので、最初つながらなかったときは焦りました。

大きな仕様として、
「SNI SSLはリバースプロキシによるHTTPS接続である」点。

この仕様のために、
簡単に言うとWordPressはhttps接続でリクエストされてもhttp接続で来たと勘違いします。
そのため、httpsアクセスを親切にhttp接続にリダイレクトしてくれちゃうという挙動が発生してしまうのです。

それを解決するための記述を説明します。
 
目標は、例として
「さくらインターネットのSNI SSLを利用して、自社のURLを https://www.kaiza.jp にする」
とします。
 
まず、.htaccessの最初に下記を記述します。
これはhttp接続をhttps接続にリダイレクトする記述です。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://www.kaiza.jp/$1 [R=301,L]
</IfModule>

次に、wp-config.phpに以下を記述します。
これは、プロキシでIPアドレスが入ってきたら強制的にSSLアクセス状態にする記述です。

if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
$_SERVER['HTTP_HOST'] = 'www.kaiza.jp';
$_SERVER['SERVER_NAME'] = 'www.kaiza.jp';
$_ENV['HTTP_HOST'] = 'www.kaiza.jp';
$_ENV['SERVER_NAME'] = 'www.kaiza.jp';
}

以上の記述で、

「さくらインターネットのSNI SSLを利用して、自社のURLを https://www.kaiza.jp にする」

が完成しました。


関連するWordPressカスタマイズ事例