У меня возникла следующая проблема на хосте с использованием Apache 2.2.22 + PHP 5.4.0
Мне нужно предоставить файл, /home/server1/htdocs/admin/contents.php
когда пользователь делает запрос:, http://server1/admin/contents
но я получаю это сообщение на сервере error_log.
Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)
Обратите внимание, что я mod_negotiation
включил и MultiViews среди вариантов для соответствующего виртуального хоста:
<Directory "/home/server1/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride All
</Directory>
Я также использую mod_rewrite
, со следующими .htaccess
правилами:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>
Это кажется очень странным, но на той же коробке с PHP 5.3.6 он работал правильно. Я просто пытаюсь обновить до PHP 5.4.0, но я не могу решить эту проблему переговоров. Любая идея о том, почему Apache не может соответствовать contents.php
при запросе content
(что должно быть, что должно делать mod_negotiation)?
ОБНОВЛЕНИЕ: я заметил, что mod_negotiation работает правильно с файлами с расширением, отличным от .php: поэтому, если бы у меня был файл с именем /admin/contents.txt, я мог бы обращаться к нему регулярно с помощью браузера с / admin / contents url. Так что проблема только для php файлов. Любая подсказка о том, что может привести к провалу переговоров?
+MultiViews
включенным, и она исчезла после его отключения.