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

スポンサーリンク

シェアする

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

フォローする

App Store