Htaccess переписать правило странное совпадение
У меня есть следующее правило переписывания:
ErrorDocument 404 /404.html
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^index\.php/(.*)$ /$1 [L,R=301]
Я хочу перенаправить все URL типа:
http://www.domain.com/index.php/any-character-here
в
http://www.domain.com/any-character-here
Моя проблема в том, что он также соответствует URL-адресам, таким как:
http://www.domain.com/index/any-character-here
Я закомментировал все остальные правила, чтобы убедиться, что это то, что соответствует, и это так. Любая идея, почему соответствует второй тип URL?
Спасибо
1 ответ
Решение
Я подозреваю, что у вас есть MultiViews
опция (согласование контента) включена. Отключите его, используя эту строку сверху:
Options -MultiViews
- вариант
MultiViews
используетсяApache's content negotiation module
который бежит раньшеmod_rewrite
и и делает сервер Apache соответствующим расширениям файлов. Так/file
может быть в URL, но он будет служить/file.php
,