SSブログ

cakePHPを共用SSLで使う場合 #2 [cakePHP]

早速ですが、前記事の
通常のアクセスとSSLのアクセスをどう切り替えるか

に関して解決したのでこちらにメモ



簡単に言うとhtaccessへ追記で対応できました。
「RewriteCond 」で的確な条件を付けてあげれば良いんですね。


例えば通常の時のURLが、
http://ooooxxxxiiii.com/

で、共用SSLのURLが以下のように変わる場合
xxxxx25.xxxxx.co.jp/~hoge/


【方法】
インストールディレクトリのhtaccessなら

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteBase /

#SSL
RewriteCond %{HTTP_HOST} ^xxxxx25.xxxxx.co.jp
RewriteRule ^$ ~hoge/app/webroot/ [L]

RewriteCond %{HTTP_HOST} ^xxxxx25.xxxxx.co.jp
RewriteRule ^(.*)$ ~hoge/app/webroot/$1 [L]

#nomal
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]

</IfModule>


こんな感じ。
赤いところが追記した部分ですが、#SSLのすぐ下の方だと、

「RewriteCond 」でHTTP_HOSTが「xxxxx25.xxxxx.co.jp」だった場合で、という条件を付け、
その条件にあった場合だけ
RewriteRule	^$ ~hoge/app/webroot/ [L]

を実行。以下のソースは読まない。

と言う意味になる。
条件が必要な場合「RewriteRule」毎に「RewriteCond」での条件設定が必要。

また、一つの「RewriteRule」に対して複数の「RewriteCond」を書ける。




ナルホドナルホド。

この条件文を、
インストールディレクトリ、appディレクトリ、webrootディレクトリのそれぞれのhtaccessに加えるというわけ。

ちなみに、webrootディレクトリのhtaccessだとこういう感じ。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#SSL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^xxxxx25.xxxxx.co.jp
RewriteRule ^(.*)$ ~hoge/index.php?url=$1 [QSA,L]

RewriteCond %{HTTP_HOST} ^xxxxx25.xxxxx.co.jp
RewriteRule ^$ ~hoge/index.php?url=index [L]

#Nomal
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
RewriteRule ^$ index.php?url=index [L]

</IfModule>



また、appディレクトリのhtaccessに関しては書き換えなくても動きました。
通常は無くても問題無いのかな?

でも、一応、同じように対応しておきました。




これでなんとか共用SSLへの対応は出来た。

あとは、必要なページではSSLアクセスに切り替わるようにソースをいじらんとかな。


以上。


(追記) 「RewriteBase /」 は、cakePHPのデフォルトでは入ってない。。と思う。 デフォのままだと /~hoge/app/webroot/ みたいに飛ばす先のURIの頭に「/」が必要かな?



nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。