Ich habe das folgende Problem auf einem Host mit Apache 2.2.22 + PHP 5.4.0
Ich muss die Datei bereitstellen, /home/server1/htdocs/admin/contents.php
wenn ein Benutzer die Anfrage stellt http://server1/admin/contents
:, aber ich erhalte diese Meldung auf dem Server error_log.
Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)
Beachten Sie, dass ich mod_negotiation
und MultiViews unter den Optionen für den zugehörigen virtuellen Host aktiviert habe:
<Directory "/home/server1/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride All
</Directory>
Ich benutze auch mod_rewrite
, mit den folgenden .htaccess
Regeln:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>
Es scheint sehr seltsam zu sein, aber auf derselben Box mit PHP 5.3.6 hat es früher richtig funktioniert. Ich versuche nur ein Upgrade auf PHP 5.4.0, kann dieses Verhandlungsproblem jedoch nicht lösen. Gibt es eine Idee, warum Apache contents.php
bei der content
Abfrage nicht mithalten kann (was sollte mod_negotiation tun?)?
UPDATE: Ich habe festgestellt, dass sich mod_negotiation bei Dateien mit einer anderen Erweiterung als .php korrekt verhält. Wenn ich also eine Datei mit dem Namen /admin/contents.txt hätte, kann ich über den Browser mit der URL / admin / contents regelmäßig darauf zugreifen. Das Problem ist also nur für PHP-Dateien. Gibt es einen Hinweis darauf, was die Verhandlung zum Scheitern bringen könnte?
+MultiViews
aktiviert, und es verschwand beim Deaktivieren.