我想重写:
www.domain.com/entry/1
或www.domain.com/entry/1/title
到www.domain.com/entry.php?id=1
www.domain.com/entry/1/title/page/2
至www.domain.com/entry.php?id=1&page=2
www.domain.com/entry/1/title/comment
至www.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就可以在成功应用规则后停止,而不会无休止地循环。
这也是一个非常有用的工具,用于测试"重写规则"以及它们是否正常工作。