2009-09-07 68 views
0

这是一个复杂的,我希望有一个简单的答案...ModRewrite分割问题

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

与以下得到瓦尔斯:

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改写到一个非国防部,从而使重写规则变为:

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 

任何想法?

在此先感谢!

回答

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] 
+0

干杯!这很好用! – Lizard 2009-09-08 08:38:52