さくらインターネット SNI導入

構築・開発

さくらインターネットのSSLで、SNIを途中から導入したのですが、色々と問題多すぎました。

常時SSL化するためにリダイレクト処理をhtacessで進めました。
さくらのSNIの場合、特殊な書き方が必要なようです。

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_URI} !^/robots.txt$
   RewriteCond %{REQUEST_URI} !^/404error.html$
   RewriteCond %{REQUEST_FILENAME} -f [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteCond %{ENV:HTTPS} !^on$
   RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$
   RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

さくらのレンタルサーバでHTTPS(SNI SSL)な独自ドメインのWordpressサイトを構築する際の注意点 – Qiita

通常ページは、問題なくリダイレクト出来ましたが、動的に処理しているページで、file_get_contentsが動かなくなりエラーが出るようになりました。

どうやっても解決せず仕方がないので、htacessはやめて、PHPでリダイレクト処理することにしました。

<?php
if (empty($_SERVER['HTTPS'])) {
    header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
    exit;
}
?>

これで、SSL環境にリダイレクトできたので、次に www.ありに統一するための処理を作っていたところ、

if (strpos($_SERVER['HTTP_HOST'], 'www.') !== 0) {

とか入れてみたのですが、何故か無限ループに突入してしまいました。

そこで、$_SERVER をvar_dumpしてみたところ、SCRIPT_FILENAMEやHTTP_HOSTに何故か、wwwが含まれていませんでした。
その為、判定ができず常にtrueなっていました。

あと、Cookie処理していたところがあるのですが、保存はできていたのですが、読み出せず困ったことになりました。

さくらのレンタルサーバーでCookieが使えないとき | nanoway

上記サイトを参考にコンパネからWebアプリケーションファイアウォールを無効にしたところ、無事動くようになりました。

www.統一は必須ではなかったので、これ以上の調査はせず力尽きました。

コメント

スポンサーリンク
タイトルとURLをコピーしました