Я использую Apache mod_rewrite
, чтобы сделать URL моего приложения красивым. У меня есть базовые знания mod_rewrite
- несколько частей моего приложения используют простые и предсказуемые изменения.
Однако я написал функцию блога, которая использует несколько различных параметров.
http://www.somedomain.com/blog/
http://www.somedomain.com/blog/tag/
http://www.somedomain.com/blog/page/2/
В моем .htaccess есть следующие правила:
RewriteRule ^blog/ index.php?action=blog [NC]
RewriteRule ^blog/(.*) index.php?action=blog&tag=$1 [NC]
RewriteRule ^blog/page/(.*) index.php?action=blog&page=$1 [NC]
Однако правила не работают вместе. Компьютер соответствует первому правилу, а затем останавливает обработку - хотя, по моему мнению, он не должен совпадать. Я говорю машине, чтобы она соответствовала ^blog/
, и она идет вперед и совпадает с ^blog/tag/
и ^blog/page/2/
, что мне кажется неправильным.
Что не так с моими правилами? Почему они не оцениваются так, как я собираюсь?
Редактировать: Ответ состоял в том, чтобы завершить ввод, используя $
, и изменить порядок правил, очень немного:
RewriteRule ^blog/$ index.php?action=blog [NC,L]
RewriteRule ^blog/page/(.*)$ index.php?action=blog&page=$1 [NC,L]
RewriteRule ^blog/(.*)$ index.php?action=blog&tag=$1 [NC,L]
Эти правила дали желаемый эффект.