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:もしかすると、これがいけないかもしれない・・・;;