controller/action指定するとInternal Server Errorになる場合の.htaccess設定
開発の関係でちょっと特殊な環境にCakePHP構築したところ、
http://cakephp-root/
にアクセスした時は問題なかったのですが、
http://cakephp-root/controller/action
にアクセスすると、Internal Server Errorになりました。
これを、
app/webroot/.htaccess にRewriteBase設定
で解消しました。
参考URL
http://book.cakephp.org/ja/view/34/Production
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=272&forum=2
まず今回の環境。
どのように特殊かと言うと、
/var/www/html/hogehoge/
を作成すると、
/var/www/html/hogehoge/public_html/
がDocumentRootになります。
シンボリックリンクOKなので、
ln -s /home/cake/CakePHP/app/ /var/www/html/cakephp
/var/www/html/cakephp/ -> /home/cake/CakePHP/app/
更に
ln -s /home/cake/CakePHP/app/webroot/ /var/www/html/cakephp//home/public_html
/home/cake/CakePHP/app/public_html -> /home/cake/CakePHP/app/webroot
で、http://cakephp-root/に問題なくアクセスできるようになりました*1
ところが、開発を進めてhttp://cakephp-root/controller/actionにアクセスすると・・・
Internl Server Error。
あ、これはmod_rewriteっぽいなあと思ってerror_logを見ると、/home/cake/CakePHP/に何回もリダイレクトしてるログが出ています。
しかし、詳細なrewrite_logを見たい‥・と思っても、このサーバ、httpd.conf設定がどうなってるのかよくわからず如何とも(汗)
類似例を探して、たどり着いたのが先のURL。
app/webroot/.htaccessに、RewriteBase一行追加で、正しく動くようになりました。
--- app/webroot/.htaccess (リビジョン 154) +++ app/webroot/.htaccess (作業コピー) @@ -1,6 +1,7 @@ <IfModule mod_rewrite.c> RewriteEngine On + RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] -</IfModule>
ただ。
svnに差分が出ます・・・・・
追加confとか入れて根本的にDocumentRoot設定直した方が良いとは思うのですが、
この環境ちょっと特殊で間借りだから、触りたくな(ry
という場合の設定メモでした。
*1:もしかすると、これがいけないかもしれない・・・;;