Я использую apache mod_rewrite
, чтобы сделать URL моего приложения довольно красивым. У меня есть основы mod_rewrite
down pat - несколько частей моего приложения используют простые и предсказуемые перезаписывания.Работа с несколькими необязательными параметрами с помощью 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/
, что кажется мне неправильным.
Что случилось с моими правилами? Почему они не оцениваются так, как я намереваюсь?
Edit: ответ должен был завершить ввод с помощью $
, и изменить порядок правил, очень немного:
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]
Эти правила возымели эффект.
Dav, ваш «конец ввода» часть была очень полезной. Я обновлю свой вопрос, чтобы отразить ответ. Благодаря! – EvilChookie