Tengo el siguiente problema en un host que usa Apache 2.2.22 + PHP 5.4.0
Necesito proporcionar el archivo /home/server1/htdocs/admin/contents.php
cuando un usuario realiza la solicitud: http://server1/admin/contents
pero obtengo este mensaje en el servidor error_log.
Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)
Tenga en cuenta que he mod_negotiation
habilitado y MultiViews entre las opciones para el host virtual relacionado:
<Directory "/home/server1/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride All
</Directory>
También uso mod_rewrite
, con las siguientes .htaccess
reglas:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>
Parece muy extraño, pero en el mismo cuadro con PHP 5.3.6 solía funcionar correctamente. Solo estoy intentando una actualización a PHP 5.4.0, pero no puedo resolver este problema de negociación. ¿Alguna idea de por qué Apache no puede coincidir contents.php
cuando se solicita content
(que debería ser lo que se supone que debe hacer mod_negotiation)?
ACTUALIZACIÓN: Noté que mod_negotiation se comporta correctamente con archivos con una extensión diferente a .php: así que si tuviera un archivo llamado /admin/contents.txt, puedo acceder regularmente con el navegador con / admin / contents url. Entonces, el problema es solo para los archivos php. ¿Alguna pista sobre qué podría hacer fracasar la negociación?
+MultiViews
habilitado, y desapareció al deshabilitarlo.