さくらインターネットの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.統一は必須ではなかったので、これ以上の調査はせず力尽きました。
コメント