mod_rewriteが効かないと思ったら.htaccessが効いていなかった件

初めて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は必要に応じてちょこちょこ触っていましたが、一度根本から理解しないとダメですね。。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク