ブラウザ上はHTTPSアクセスであるにも関わらず、$_SERVER[‘HTTPS’]が何も指定されていない状態のため、EC-CUBEはHTTPSと認識できず、無限ループ(ERR_TOO_MANY_REDIRECTS)等が発生します。
この簡単な対処方法をご紹介します。
ALB、ELB(AWSのロードバランサ)では、ブラウザからロードバランサがHTTPS通信を行なっている場合、$_SERVER[‘HTTPS’]の代わりに$_SERVER[“HTTP_X_FORWARDED_PROTO”]という変数がPHPアプリケーションに届きます。
EC-CUBEの場合、index.phpでこれを使って$_SERVER[‘HTTPS’]に標準の値を登録してやります。
if (@$_SERVER["HTTP_X_FORWARDED_PROTO"] === 'https') { $_SERVER['HTTPS'] = 'on'; }
あるいは、より上流で対処する方法としてApacheの設定ファイル、httpd.conf等で環境変数を置き換えてやるという方法もあります。
SetEnvIf X-Forwarded-Proto ^https$ HTTPS=on
EC-CUBEをAWSで冗長化構成にするときは必須のテクニックになりますね。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。