PHPフレームワークが404になる

この記事は約2分で読めます。
スポンサーリンク

事象
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がありますか? どなかた教えてください。

コメント

タイトルとURLをコピーしました