Sto riscontrando il seguente problema su un host usando Apache 2.2.22 + PHP 5.4.0
Devo fornire il file /home/server1/htdocs/admin/contents.php
quando un utente effettua la richiesta http://server1/admin/contents
:, ma ottengo questo messaggio sul server error_log.
Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)
Si noti che ho mod_negotiation
abilitato e MultiView tra le opzioni per il virtualhost correlato:
<Directory "/home/server1/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride All
</Directory>
Uso anche mod_rewrite
, con le seguenti .htaccess
regole:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>
Sembra molto strano, ma sullo stesso riquadro con PHP 5.3.6 funzionava correttamente. Sto solo provando un aggiornamento a PHP 5.4.0, ma non riesco a risolvere questo problema di negoziazione. Qualche idea sul perché Apache non può corrispondere contents.php
quando si chiede content
(quale dovrebbe essere ciò che mod_negotiation dovrebbe fare)?
AGGIORNAMENTO: Ho notato che mod_negotiation si comporta correttamente con file con estensione diversa da .php: quindi se avessi un file chiamato /admin/contents.txt, posso accedervi regolarmente con il browser con / admin / contents url. Quindi il problema è solo per i file php. Qualche idea su cosa potrebbe far fallire la negoziazione?
+MultiViews
abilitato e è scomparso dopo averlo disabilitato.