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,
Другие вопросы по тегам