ブログ名の設定は、まだ。 ネット社会の一粒の"地の塩"でありたいと思っています。

AWSにEC-CUBEでリダイレクトに悩まされた件。

2016年06月01日 · カテゴリ:EC-CUBEの話

クライアント側で用意したサーバがAWS。
というか、実際はAWSとも知らされておらず、FTPアカウントとphpmyadminを用意してもらってEC-CUBEを設定する案件がありました。

クライアントの先にいるシステム担当会社とも話ができず、ドメインから検索してサーバがAWSということは解ったのですが、AWSに不慣れなため非常に苦労しました。

インストールしたのはデザインテンプレートの関係で最新のEC-CUBE3ではなく、2.3.5版。悩まされたのは、EC-CUBEの初期設定でhttps強制をするとループが発生。

EC-CUBEのhttps強制は、インストール画面にも表示されますが、要は
data/config/config.phpの
 define(‘ADMIN_FORCE_SSL’, FALSE);
の設定。

これをTRUE(強制)にすると管理画面にアクセスした際、ブラウザが
xxxx.jp でリダイレクトが繰り返し行われました。
となってしまい、NG。

それじゃあということで.htaccessでhttpをhttpsに強制しても同じくNG。

EC-CUBEの各テンプレートのリンクパスをhttpsから書いたりしましたが、ページを遷移するといつのまにかhttpになってしまいます。

さらに(意地になって)HEAD内にJavaScriptでhttpをhttpsに変えても、毎度毎度リンクパスは(ルートパスにしていても)なぜかhttpに行き、それからJSでhttpsにリダイレクトしている始末。

そんなにhttpに戻りたいのか?と言いたくなるほどでして。

まあいいかと、JSでhttpsに強制して、買い物の動作テストをすると、カード情報の画面で表示エラー(真っ白)に。

あー、それ致命傷じゃん。orz。

結局、長年懇意にしている天才肌のプログラマーさんに教えを乞うと、
ロードバランサー配下なので元のリクエストがhttpsなのかEC-CUBEはわかっていない。
とのことで、下記のサイトにある「SetEnvIf」で対応すべしとのことでした。

AWS ELB + SSL Termination下でEC-CUBEを正しく動かす(続 カッコの付け方)
(以下抜粋)
mod_setenvif
apacheモジュールで setEnvIfというのがあります。これを使って$_SERVER変数を無理やり追加します。
SetEnvIf X-Forwarded-Proto ^https$ HTTPS=on

ありがとうございます。
.htaccessに上記の1行(SetEnvIf ***)を書いてUPしたら、解決しました。
プログラマーさんの指示とこのブログ主さんのおかげで、長いトンネルから抜け出すことができました。

« 1つ古い記事:

1つ新しい記事: »

Leave a Reply

Trackback URL

記事テーマと関係ないとか、リンクがない場合(一方的TB)、あとアダルトサイトは申し訳ないですが承認しませんので予めご了解ください。またrel="nofollow"つけてるので、SEOのリンクジュースが目的のコメント、TBは残念ながら効果が無いと思います。予めご承知おきください。