Apache 2.2.22 + PHP 5.4.0を使用しているホストで次の問題が発生しています
/home/server1/htdocs/admin/contents.php
ユーザーがリクエストを行うときにファイルを提供する必要があります:http://server1/admin/contents
、サーバーerror_logでこのメッセージを取得します。
Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)
mod_negotiation
関連する仮想ホストのオプションの中でMultiViews を有効にしていることに注意してください。
<Directory "/home/server1/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride All
</Directory>
またmod_rewrite
、次の.htaccess
ルールでを使用します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>
非常に奇妙に思えますが、PHP 5.3.6と同じボックスでは、以前は正しく動作していました。PHP 5.4.0にアップグレードしようとしていますが、この交渉の問題を解決できません。Apacheがcontents.php
要求時にマッチできない理由についてのアイデアcontent
(mod_negotiationが何をすべきか)
更新: .phpとは異なる拡張子を持つファイルでmod_negotiationが正しく動作することに気付きました。したがって、/ admin / contents.txtという名前のファイルがある場合、/ admin / contents urlを使用してブラウザーで定期的にアクセスできます。したがって、問題はphpファイルのみです。交渉が失敗する原因についての手がかりはありますか?
+MultiViews
有効にするとこの問題が発生し、無効にすると消えてしまいました。