我使用apache的mod_rewrite
来使我的应用程序的URL很漂亮。我掌握了mod_rewrite
的基础知识 - 我的应用程序的几个部分使用简单和可预测的重写。用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]
这些规则产生预期的效果。
DAV,你的“输入端”的一部分是非常有益的。我会更新我的问题以反映答案。谢谢! – EvilChookie 2009-09-16 01:10:29