.htaccess изменяют правила и перенаправление, если существует .php в URL

Вы устанавливаете http заголовки виртуальной папки, таким образом, http сервер знает, какой адрес HTTP переходит в который виртуальная папка.

1
задан 31 January 2011 в 05:12
1 ответ

Порядок важен, потому что необходимо удостовериться, что постановляет, что специфические особенности соответствия прибывают перед общими правилами, которые также поймали бы специфические особенности, но не должны.

Так, например, следующие двойные строки параметра:

RewriteRule ^newsletter-confirm/(.*)/$ newsletter-confirm.php?email=$1 [L]
RewriteRule ^newsletter-remove/(.*)/$ newsletter-remove.php?email=$1 [L]
RewriteRule ^(.*)/screenshots/$ screenshots.php?product=$1 [L]

Должен прибыть перед универсальным двойным параметром:

RewriteRule ^(.*)/(.*)/$ products.php?product=$1&page=$2 [L]

Иначе они соответствовали бы как продукт (со страницей) запрос. Пока Вы заказываете с тем приоритетом в памяти, он должен работать приемлемо.

Вы могли осуществить рефакторинг правила сделать их более краткими, но вероятно за счет удобочитаемости. Единственное правило, которое избыточно, является последним, поскольку предпоследняя строка ловит его.

RewriteRule ^(.*)/$ $1.php [L]
RewriteRule ^products/$ products.php [L]

products/ конкретный случай дженерика (.*)/, так были бы соответствия дженериком прежде, чем обработать когда-либо мимо к тому последнему правилу. К счастью, это все еще работает, поскольку ключевое слово является, к счастью, тем же как именем файла.

0
ответ дан 4 December 2019 в 10:30

Теги

Похожие вопросы