まあ、さくらサーバーだけなのかどうかはちょっと分からないんですが……。
先日、いつものようにCakePHPで開発を行って、いざサーバーにファイルをアップして動作を確認って段階に来た時に、いつもと同じようにファイルのアップをして必要な設定を行ったつもりだったんですが、Internal Server Errorが出たんですよ。
今までも同じような目にあった……ような気がしなくもないんですが、でもさくらサーバーには結構何度もCakeで作ったものを置いてるので、それであまり記憶に残ってないってことは、普段はInternal Server Errorにはなってないはずだと思うんですよね。俺の記憶力がよっぽどきてない限りは。
でもそれが出た。
だいたいこういうときは.htaccessに問題があると相場が決まっているので、.htaccessの設定のどこがおかしいかをとりあえず洗ってみたんですが、結論からいうとやはり.htaccessの設定に問題があったせいでInternal Server…って、これ毎回書くのめんどいな。次から500エラーって呼ぶわ。次に呼ぶ機会があればね。
調べたところ、さくらサーバーでCakeを動かす場合は、ちゃんとRewriteBaseを書かないといけないらしい。
RewriteEngine On
RewriteBase / <= これ
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
このRewriteBaseに書くパスはCakePHPのwebrootが置いてあるところの相対パスを書けばいいので、例えばwww/test/というディレクトリの下にindex.phpと.htaccessを置いてあれば、単純に『/』で良い……ってことなのかな?
プランによって違うのかもしれないけど、さくらのレンタルサーバーを使うときは、たいていwwwがwebrootになる。だから普段はwwwの直下にindex.phpや.htaccessを置いているんだけど、今回はwww直下で他のサービスが動いてたから、いっこディレクトリを切ってファイルをアップしたんですけど、もしかしたらその辺りの設定が原因なのかもしれないね。wwwにもその他のサービスで使ってる.htaccessが置いてあったから、何か影響があったのかもしれない。
ま、何にしても動いてよかったです。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。