htaccess localhost - мод-переписать, htdocs, mamp - PullRequest
0 голосов
/ 23 января 2020

извините за новость:

Я просто хочу, чтобы на моем сайте localhost htdocs работал следующий RewriteRule:

RewriteEngine on
RewriteRule "index" "index.php"

Перезапись мода не комментирована (в mamp), и Я знаю, что .htaccess просматривается, потому что я могу вызвать ошибку на странице, если захочу.

Я читаю страницы и немного понимаю Регулярные выражения, кое-что, что я видел: RewriteBase, SymLinks, RewriteCond и некоторые опции в квадратных скобках. Что-нибудь из этого, почему мой Rewrite не работает, пожалуйста?

(я пробовал разные вещи)

Спасибо. Chris

1 Ответ

1 голос
/ 23 января 2020

Полагаю, «перезапись не работает» означает, что у вас есть перезапись 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
...