もーマヂ無理。。。。
さくらインターネットのレンタルサーバにFuelPHPを置くのはめんどくさすぎる。
とりあえずFuel::$enviromentの設定を環境変数から読み込めない(.htaccessにSetEnvが許可されていない)ので、/fuel/app/bootstrap.phpいじって、productionをデフォにする必要があるし、
mod_rewriteの関係でRewriteBaseも設定しないといけないし、てか.htaccessでOptions使えないから、そこの設定も消さないといけないし・・。
まぁこの辺は
さくらのレンタルサーバーでFuelPHPを動かすときに気をつけること
とか、何人かの方がまとめてるからいいとして、今度はアプリをSNI SSLに対応しようと思ったらまた動かないっていう。
問題点と原因
まぁFuelPHPっていうか、さくらの独自仕様の話のほうが強いんだけど、、。
問題点は二つ
- なんかリダイレクトがHTTPになる
- Uri::createなどがHTTPになる
結論から言うと、.htaccessと、public内のindex.phpを書き換えて対応できました。
原因はさくらがリバースプロキシで対応しているせいで、FuelPHPから見ると非HTTPS通信に見えたから。
対応方法
.htaccess
まずは.htaccessの上のほうを以下のように書き足した。
RewriteEngine on
# NOTICE: If you get a 404 play with combinations of the following commented out lines
#AllowOverride All
RewriteBase /
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
FuelPHP用に足したのは最後の三行(RewriteBaseから)。SSLに関係しているのは下の二行だけ。
public/index.php
次、index.phpは一番上のini_setの下に以下の文を書き込んだ。
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) { $_SERVER['HTTPS'] = 'on'; $_ENV['HTTPS'] = 'on'; $_SERVER['HTTP_HOST'] = 'www.example.com'; $_SERVER['SERVER_NAME'] = 'www.example.com'; $_ENV['HTTP_HOST'] = 'www.example.com'; $_ENV['SERVER_NAME'] = 'www.example.com'; }
まぁリバースプロキシ軽油だったら、明示的にSSL関係の環境変数やらをパッチして動かすという・・。荒業です。
参考にしたというかまんまパクったのは以下のページです。助かりました。
さくらのレンタルサーバでHTTPS(SNI SSL)な独自ドメインのWordpressサイトを構築する際の注意点
コメント