初めてCakePHPを設置するサーバで、配置先がルートディレクトリよりも下の階層だったので、.htaccessの編集が必要でした。詳しくはこちらの記事
[CakePHP] 任意のディレクトリに設置する .htaccess
にありますが、合計3つの.htaccessに対してRewriteBaseを設定する必要があります。
なので、ささっと設定したのですが、動かない。。「Rewrite使えないんじゃネーノ?」というエラーメッセージが出るばかり。
mod_rewriteを使うには、Options FollowSymLinkも一緒に指定しないと、ということで指定しても動かない。
httpd.confを見るとちゃんとモジュールはLoadしてるし一体何だろう、ということで、まずは.htaccessそのものが効いているか確かめてみました。
「Options +Indexes」や「deny from all」などのわかりやすいディレクティブを書いてためしてみると・・動かないorz
そもそもCakePHPを設置したディレクトリはAliasで設定された仮想ディレクトリで、その設定は下記になっています。
Alias /hoge "/home/xxx/hoge" <directory "/hoge"> Options FollowSymLinks Allow from all AllowOverride all </directory>
ちゃんとAllowOverrideがあるので、.htaccessが効かないはずない、と思い込んでいたのですが、httpd.confに下記の記載がありました。
<directory /> Options FollowSymLinks AllowOverride None </directory>
これがあると、AliasのディレクトリでAllowOverride Allにしても無視されてしまうんですね。。
ということで、この部分をNoneからAllにしたら、無事動きました。mod_rewriteも問題なく動作。
httpd.confは必要に応じてちょこちょこ触っていましたが、一度根本から理解しないとダメですね。。
コメント
[…] mod_rewriteが効かないと思ったら.htaccessが効いていなかった件 […]