Saya mengalami masalah berikut pada host menggunakan Apache 2.2.22 + PHP 5.4.0
Saya perlu memberikan file /home/server1/htdocs/admin/contents.php
ketika pengguna membuat permintaan:, http://server1/admin/contents
tapi saya mendapatkan pesan ini di server error_log.
Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)
Perhatikan bahwa saya telah mod_negotiation
mengaktifkan dan MultiViews di antara opsi untuk virtualhost terkait:
<Directory "/home/server1/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride All
</Directory>
Saya juga menggunakan mod_rewrite
, dengan .htaccess
aturan berikut :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>
Tampaknya sangat aneh, tetapi pada kotak yang sama dengan PHP 5.3.6 digunakan untuk bekerja dengan benar. Saya hanya mencoba upgrade ke PHP 5.4.0, tetapi saya tidak bisa menyelesaikan masalah negosiasi ini. Adakah alasan mengapa Apache tidak dapat mencocokkan contents.php
ketika meminta content
(yang seharusnya dilakukan mod_negotiation)?
UPDATE: Saya perhatikan bahwa mod_negotiation berperilaku benar dengan file dengan ekstensi berbeda dari .php: jadi jika saya memiliki file bernama /admin/contents.txt, saya dapat mengaksesnya secara teratur dengan browser dengan / admin / url url. Jadi masalahnya hanya untuk file php. Adakah petunjuk tentang apa yang bisa membuat negosiasi gagal?
+MultiViews
diaktifkan, dan menghilang setelah menonaktifkannya.