使用.htaccess重写URL.我应该把哪个规则放在第一位


URL rewrite using .htaccess. Which rule should I put first?

我想重写:

www.domain.com/entry/1www.domain.com/entry/1/titlewww.domain.com/entry.php?id=1

www.domain.com/entry/1/title/page/2www.domain.com/entry.php?id=1&page=2

www.domain.com/entry/1/title/commentwww.domain.com/entry.php?id=1&a=comment

我在.htaccess文件中有以下内容

RewriteRule ^entry/(([0-9]+))(?:/([^/]*))?/?$ ./entry.php?id=$1  
RewriteRule ^entry/([0-9]+)/([^/]+)/page/([0-9]+)$ ./entry.php?id=$1&page=$3 
RewriteRule ^entry/([0-9]+)/([^/]+)/([^/]+)$ ./entry.php?id=$1&a=$3  

它起作用了。我还尝试将订单反转为:

RewriteRule ^entry/(([0-9]+))(?:/([^/]*))?/?$ ./entry.php?id=$1  
RewriteRule ^entry/([0-9]+)/([^/]+)/([^/]+)$ ./entry.php?id=$1&a=$3  
RewriteRule ^entry/([0-9]+)/([^/]+)/page/([0-9]+)$ ./entry.php?id=$1&page=$3 

它也在起作用。.htaccess文件上的行是如何执行的?以上哪个版本更正确?谢谢

这应该没关系。但一定要在每个RewriteRule行的末尾放一个[L],这样Apache就可以在成功应用规则后停止,而不会无休止地循环。

这也是一个非常有用的工具,用于测试"重写规则"以及它们是否正常工作。