这是一个复杂的问题,我希望能有一个简单的答案......
RewriteRule ^category/([^.]+)/([0-9]+)/([^.]+)/([0-9]+) category.php?c_id=$2&filters=$3&_p=$4&name=$1
这个规则将拿起类别/厨房/ 10 / 0-0-0-0-0-0-0-0 / 1
使用以下get vals:
category.php?c_id=10&filters=0-0-0-0-0-0-0-0&_p=1&name=kitchen
过滤器存储在0-0-0-0-0-0-0-0的原因是因为9个反向引用限制。每个0都是一个不同的过滤变量,我通过在$ _GET ['filter']上进行拆分来访问。
我现在将我的URL更改为非mod重写的URL,以便重写规则变为:
RewriteRule ^category/([^.]+)/([0-9]+)/([^.]+)/([0-9]+) category.php?c_id=$2&filters=$3&_p=$4&name=$1 [R=301,L]
注意[R = 301,L]因此它成为301重定向。
这一切都很好,但我想知道是否有一种巧妙的方式将0-0-0-0-0-0-0-0分开,以便每个0都是一个变量。所以我可以得到
category.php?c_id=10&f1=0&f2=0&f3=0&f4=0&f5=0&f6=0&f7=0&f8=0&_p=1&name=kitchen
有什么想法吗?
提前致谢!
答案 0 :(得分:3)
您可以使用RewriteCond
来完成此操作:
RewriteCond $3 ^([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)$
RewriteRule ^category/([^.]+)/([0-9]+)/([^.]+)/([0-9]+) category.php?c_id=$2&f1=%1&f2=%2&f3=%3&f4=%4&f5=%5&f6=%6&f7=%7&f8=%8&f9=%9&_p=$4&name=$1 [R=301,L]