2014年3月13日木曜日

AWSのRoute53+ELB+fuelphpでやっているときのhttp→httpsに強制的にやるhtaccessの設定的なお話

  • このエントリーをはてなブックマークに追加

まんまタイトル通り。
AWSでRoute53+ELBでやっている際に、
http→httpsと強制的にプロトコルを変更したい的なときのお話。
htaccessでやっちゃおう的な。

fuelphpの場合でも基本的に変わらないんだけど、AWSでELB(Elastic Load Balancing)を通すとちょっと違うので、
そうなった場合にどこを弄ればよいのか的な感じ。

publicフォルダ内にある.htaccessに3行追加してあげればよい。

// public/.htaccess

  # Make sure directory listing is disabled
    Options +FollowSymLinks -Indexes
    RewriteEngine on

    RewriteCond %{HTTP:X-Forwarded-Port} !^443$
    RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
    RewriteRule ^(.*)?$ https://%{HTTP_HOST}$1 [R=301,L]

    # NOTICE: If you get a 404 play with combinations of the following commented out lines
ってな感じ。
ELBを通すと通常と違ってSERVER変数のhttpsとか取る事は出来ない?みたい、よくわからんけど。
というのもインスタンスに直接https通信してるわけではなくて、ELBを通してるからだと思うけど。
なので諸々判別するためのRewriteCondを書いてあげてリダイレクトしてあげるみたいな。

ってな感じでやれば何も問題なくhttp→https通信になる。
サイトの一部だけhttpsにするのもいいんだけど、
httpとhttpsではブラウザのcookieは共有出来ないわけだから、全体をhttpsにした方が便利でもあるし。

まぁでも普通にfuelphpのconfigとかでssl = onみたいな設定をしたら強制httpsになるみたいな、
そんな便利な機能を追加してくれないかなと思ってみたり。

Adsense