2009-09-07 4 views
0

Это сложный один, который я надеюсь, что есть простой ответ ...ModRewrite Split Issue

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 является переменной get. Поэтому я могу получить

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