事象
ZendFramework1で発生
index/xxxxxという形のURLの場合404を返しzendのエラー画面も出ない
ログには Negotiation: discovered file(s) matching request と出ている
原因
ApacheのMultiViewsの設定がONになっている
MultiViewsとは?
拡張子がないURLに対して自動的によしなにしてくれるやつ
例えば、URL末尾をindexとした場合、「index.拡張子」のものを探す。
該当したものがあればそれを選定する。
なければファイルがないとして404を返す。
対策1
MultiViewsをOFFにする
特別な理由がないのならOFFにしておく方が良い
.htaccessに以下を記述Options -MultiViews
対策2
AddTypeを指定
1が何らかの理由で使えない場合はこちら。
指定してあげることでどの拡張子を探しに行くか設定ができる
.htaccessに以下を記述AddType application/x-httpd-php .php
indexに対して反応しているので、拡張子が省略されることによってindex.php以外の何かが選定されて404が発生しているのではないかと思われる。
また.htaccessではなくconfファイルに設定してもいい。
http://tkawanaka.hatenablog.com/entry/2014/04/05/134356
Optionsを利用せずにMultiViewsを無効にする
ApacheにてMultiViewsというものがある。この機能を有効・無効にするに、.htaccessファイルを使うことができる。有効にするOptions +MultiViews無効にするOptions -MultiViewsさくらのレンタ
Apache httpd.confの場所について
httpd.confの設定ファイルを編集したいのですが、 どのディレクトリにあるのかわからず、編集できない状態です。 どこにhttpd.confがありますか? どなかた教えてください。
コメント