复杂的htaccess重写规则 - 我从哪里开始?

时间:2009-10-16 13:52:25

标签: apache url .htaccess mod-rewrite slug

我之前已经问过mod_rewrite并得到了完美的答案,但是现在我需要做一些更复杂的事情,真的需要一个更了解mod_rewrite的人的建议。

到目前为止,我的重写规则看起来像这样:

RewriteRule ([a-zA-Z_-]+)/([0-9]?) index.php?cat=$1&page=$2

这会显示以下网址:/categoryname并显示/categoryname/1/等网页。

但我真的想修改规则以使用子类别,例如/categoryname/subcategoryname/,并且仍然可以使用页面系统(subcat/2/),但我似乎无法绕过头脑此

如果您在主要类别等,则需要忽略子猫重写。

希望有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

RewriteRule [a-zA-Z_-]+/([a-zA-Z_-]+)/([0-9]?) index.php?cat=$1&page=$2 [L]
RewriteRule ([a-zA-Z_-]+)/([0-9]?) index.php?cat=$1&page=$2 [L]

答案 1 :(得分:0)

我会使用这些规则:

RewriteRule ^([a-zA-Z_-]+)/([a-zA-Z_-]+)/(([1-9][0-9]*)/)?$ index.php?cat=$1&subcat=$2page=$4
RewriteRule ^([a-zA-Z_-]+)/(([1-9][0-9]*)/)?$ index.php?cat=$1&page=$3

使用开头(^)的断言和字符串的结尾($),不会有意外应用其中一条规则的歧义。 (([1-9][0-9]*)/)?部分用于可选的分页。