Je rencontre le problème suivant sur un hôte utilisant Apache 2.2.22 + PHP 5.4.0
Je dois fournir le fichier /home/server1/htdocs/admin/contents.php
lorsqu'un utilisateur fait la demande:, http://server1/admin/contents
mais j'obtiens ce message sur le serveur error_log.
Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)
Notez que j'ai mod_negotiation
activé et MultiViews parmi les options pour l'hôte virtuel associé:
<Directory "/home/server1/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride All
</Directory>
J'utilise également mod_rewrite
, avec les .htaccess
règles suivantes :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>
Cela semble très étrange, mais sur la même boîte avec PHP 5.3.6, cela fonctionnait correctement. J'essaie simplement une mise à niveau vers PHP 5.4.0, mais je ne peux pas résoudre ce problème de négociation. Une idée sur pourquoi Apache ne peut pas correspondre contents.php
lors de la demande content
(quelle devrait être la fonction de mod_negotiation)?
MISE À JOUR: J'ai remarqué que mod_negotiation se comporte correctement avec des fichiers avec une extension différente de .php: donc si j'avais un fichier nommé /admin/contents.txt, je peux y accéder régulièrement avec le navigateur avec / admin / contents url. Le problème concerne donc uniquement les fichiers php. Un indice sur ce qui pourrait faire échouer la négociation?
+MultiViews
activé, et il a disparu en le désactivant.