edo1z blog

プログラミングなどに関するブログです

さくらサーバでhttpsアクセスしてもhttpsアクセスしたことにならない

お客さんがさくらサーバでSSL設定されたのですが、httpsアクセスしてもhttpsアクセスしたことにならない。httpsアクセスすると$_SERVER['HTTPS']がセットされるはずですがない。これがセットされてない場合、httpsのURLにリダイレクトするような設定をしてたのでリダイレクトループになりました。

参考:サクラのレンタルサーバーで共有SSLを使うとHTTPSを認識しない問題

if (!isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR'])) {}

$_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']がセットされてなければhttpsじゃないと判断できるらしい。

下記のような感じでやったらできた。

private function _chk_https()
{
    if(empty($_SERVER['HTTPS']) && !isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR'])){
        $this->_forceSSL();
    }
}

private function _forceSSL()
{
    return $this->redirect('https://'.env('SERVER_NAME').$this->here);
}