2009-09-07 96 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