CloudFlareのFlexible SSLでEC-CUBEがぶっ壊れた

CloudFlareのFlexible SSLでEC-CUBEがぶっ壊れた

管理機能

CloudFlareの無料SSLを使って常時SSL化出来る、というのは知っていたもの試していなかったのでちょちょいと試してみました

結果

一見正常に動いているものの、リンクをクリックすると不正なページ遷移
管理画面にログインは出来ても、リンクをクリックすると不正なページ遷移

サイトがぶっ壊れました(;´Д`)

ググればWordpressの例がたくさん出てくるものの
なんでEC-CUBEも微妙に動かなくなるんだと悩むこと1時間

結局wordpressと原因は一緒

/**
 * HTTPSかどうかを判定
 *
 * @return bool
 */
public function sfIsHTTPS()
{
    // HTTPS時には$_SERVER['HTTPS']には空でない値が入る
    // $_SERVER['HTTPS'] != 'off' はIIS用
    if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
        return true;
    } else {
        return false;
    }
}

ここでSSLと判定できないことが主原因で不明なエラーとなるようでした
というわけで対処も一緒

data/config/config.php とかに以下を追加

if( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO'] ){
    $_SERVER['HTTPS'] = 1;
    $_SERVER['SERVER_PORT'] = 443;
}

参考サイト: CloudFlareのFlexible SSLでWordPressがぶっ壊れた | 高橋文樹.com

これでCloudFlareの無料SSLを使って全ページSSL化することが出来ました