Полагаю, «перезапись не работает» означает, что у вас есть перезапись l oop, что приводит к внутренней ошибке сервера 500.
Что здесь происходит, это запрос на /index
переписано на index.php
. Но запрос на этом не заканчивается, потому что механизм перезаписи запускается снова, на этот раз с index.php
в качестве запроса. Теперь index.php
соответствует шаблону index
и переписывается в index.php
. Опять же, механизм перезаписи запускается с index.php
в качестве запроса, пока не будет достигнуто максимальное число циклов, и Apache не сдается, возвращая «500 Internal Server Error».
Вы можете увидеть l oop in Обработка набора правил по пути, начинающемуся с
- Запрос
- Apache получает URI
- RewriteRules -> Yes
- RewriteRule
- Проверка шаблона -> Соответствие
- RewriteCond -> Нет
- Произвести подстановку
- Больше правил? -> Нет
- Ури изменился? -> Да, внутренний URI
Вы можете ограничить RewriteRule
с помощью RewriteCond
, либо очень конкретно c исключить index.php
RewriteCond %{REQUEST_URI} !=/index.php
или более обычно применяется только тогда, когда запрос не соответствует существующему файлу
RewriteCond %{REQUEST_FILENAME} !-f