FuelPHPをさくらのレンタルサーバーに設置してSNI SSLを設定する方法

FuelPHP

もーマヂ無理。。。。
さくらインターネットのレンタルサーバに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サイトを構築する際の注意点

コメント

タイトルとURLをコピーしました