くりゅぴ!

サーバーやWEB問題解決のメモから生活お得情報まで。未分類のものは執筆中

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

事象
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

https://blog.trippyboy.com/2011/apache/options%E3%82%92%E5%88%A9%E7%94%A8%E3%81%9B%E3%81%9A%E3%81%ABmultiviews%E3%82%92%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B/

https://teratail.com/questions/1239

WEB開発

タグ:

WEB開発の最新記事

2020年7月13日
印刷時改ページをする
2020年7月10日
PHPのJsを外部ドメインより呼び出す
2020年7月10日
ブラウザにキャッシュさせない

コメントを残す

メールアドレスが公開されることはありません。