Проблема с несколькими правилами перезаписи - PullRequest
1 голос
/ 03 сентября 2010

У меня есть это правило, которое перенаправляет все запросы без . в них на index.php, и оно прекрасно работает:

# Redirect all page requests to content handler
RewriteRule ^([^.]*)$ index.php [L]

Теперь я также хотел бы запретить любые запросы, в которых исходный URL содержит .php. Когда я добавляю другое правило, подобное этому (после первого), первое правило нарушается:

# Disallow access to PHP files
RewriteRule \.php 404.php [L]

Я думал, что добавление [L] к первому правилу остановит выполнение второго правила, но, похоже, оно не даст никакого эффекта: вывод первого правила (т. Е. index.php) соответствует второму правилу и всем запросам в конечном итоге в 404.php. Что я тут не так делаю?

1 Ответ

2 голосов
/ 03 сентября 2010

[L] означает, что больше правил для этого запроса не обрабатывается, но весь путь снова запускается при обработке index.php.Попробуйте добавить новое правило, чтобы правило 404 срабатывало, только если запрошенная страница не index.php, что-то вроде этого:

# Disallow access to PHP files
RewriteCond %{REQUEST_FILENAME} !=index.php
RewriteRule \.php 404.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...