mod_rewrite効かず、 [negotiation:error]

PuPHPet環境にてFuelPHPを使った開発していた。
『/index』にアクセス出来るように作っていたのに、アクセスが飛ばない。
『/index』以下においては、こちらが用意した404エラーすらも出ない。
mod_rewriteがそこだけスッポリ効いていないのだ。
『.htaccess』をどんなに変えようと、消そうと全く変わらないエラー。
同じようなことに困って、原因がhtaccessかと四苦八苦していた英語情報も見つけた…

原因と対応方法ついて記載しておく。
多分他のCMSでも出るエラーだしね…。

error.logを確認するとアクセスの度に、以下のようなエラーが出る。9のとこは変動。

 [negotiation:error] [pid 9999:tid 999999999999999] [client 192.168.10.100:99999] AH00687: Negotiation: discovered file(s) matching request: /www/example/public/index

ただファイルがないところにアクセスしてもこのようなエラーは出ない。

apacheのoptions『MultiViews』が原因だった。
実は明後日の方向に探索かけてて解決まで3日かけた…

『config.yaml』に『- MultiViews』と設定があった…あああああ…
PuPHPetでなければ『httpd.conf』に基本的には記載がある

この『MultiViews』、似たようなファイルを探そうとするものだった。
拡張子無しで『index.php』を探しているのだ!そんなんないのに!

解決方法

『.htaccess』に『-MultiViews』を追加するだけ。

すでにOptions記載あるなら下記のように追加

Options +FollowSymLinks -Indexes -MultiViews

なければ下記を追加。場所は上部の方がいいかと。
Options -MultiViews

コメント

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