2013-02-14 66 views
0

我有一个搜索引擎,我希望搜索查询的URL更加人性化。 选择的分类引擎支持搜索,可以说CAT1,CAT2和CAT3在我的情况下,URL重写的正则表达式是什么?

如果用户选择CAT1和CAT3在搜索时,URL看起来像: mysite.com/search.php?q=productname&cats=cat3,cat1

我想重写URL看如下面的形式: mysite.com/productsearch/cat1-cat3/productname

是否可以重写该规则并用,替换-

+0

你想cat3'和'cat1'的'顺序被转换,还是一个错字? – Floris 2013-02-14 14:49:35

+0

否,原始URL和重写URL中的顺序都是不必要的。 – 2013-02-14 14:51:36

回答

0

sed 's/search.php\?q=\(.*\)&cats=\(cat[0-9]\),\(cat[0-9]\)/productsearch\/\2-\3\/\1/g'

应接近...

解析如下:?

“发现,后面的东西 ”的search.php Q =“,到” &”,并把它在缓冲区1

“发现后面的两件事‘’形式的‘猫=猫后面跟着一个数字’,并用逗号隔开 - 把它们放到缓冲区2和3”

“与productsearch/(buffer 2)-(buffer 3)/(buffer 1)更换整个事情”这可能不是完美的,但它应该是非常接近...测试输出:

echo 'mysite.com/search.php?q=productname&cats=cat3,cat1' | sed 's/search.php\?q=\(.*\)&cats=\(cat[0-9]\),\(cat[0-9]\)/productsearch\/\2-\3\/\1/g' 
mysite.com/productsearch/cat3-cat1/productname 
+0

我刚刚意识到你可能想使用Apache的mod_rewrite语法...所以这不适合你。我将在今天晚些时候再次拍摄它。同时,也许有人可以从我的想法得到灵感...... – Floris 2013-02-14 15:30:18