cakePHPを共用SSLで使う場合 #2 [cakePHP]
早速ですが、前記事の
通常のアクセスとSSLのアクセスをどう切り替えるか
に関して解決したのでこちらにメモ
簡単に言うとhtaccessへ追記で対応できました。
「RewriteCond 」で的確な条件を付けてあげれば良いんですね。
例えば通常の時のURLが、
http://ooooxxxxiiii.com/
で、共用SSLのURLが以下のように変わる場合
xxxxx25.xxxxx.co.jp/~hoge/
【方法】
インストールディレクトリのhtaccessなら
こんな感じ。
赤いところが追記した部分ですが、#SSLのすぐ下の方だと、
「RewriteCond 」でHTTP_HOSTが「xxxxx25.xxxxx.co.jp」だった場合で、という条件を付け、
その条件にあった場合だけ
を実行。以下のソースは読まない。
と言う意味になる。
条件が必要な場合「RewriteRule」毎に「RewriteCond」での条件設定が必要。
また、一つの「RewriteRule」に対して複数の「RewriteCond」を書ける。
ナルホドナルホド。
この条件文を、
インストールディレクトリ、appディレクトリ、webrootディレクトリのそれぞれのhtaccessに加えるというわけ。
ちなみに、webrootディレクトリのhtaccessだとこういう感じ。
また、appディレクトリのhtaccessに関しては書き換えなくても動きました。
通常は無くても問題無いのかな?
でも、一応、同じように対応しておきました。
これでなんとか共用SSLへの対応は出来た。
あとは、必要なページではSSLアクセスに切り替わるようにソースをいじらんとかな。
以上。
(追記) 「RewriteBase /」 は、cakePHPのデフォルトでは入ってない。。と思う。 デフォのままだと /~hoge/app/webroot/ みたいに飛ばす先のURIの頭に「/」が必要かな?
通常のアクセスと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の頭に「/」が必要かな?
コメント 0