在我的情况下,URL重写的正则表达式是什么?

时间:2013-02-14 14:48:04

标签: regex apache url-rewriting

我有一个搜索引擎,我希望搜索查询的网址更具人性化。 引擎支持在所选类别中搜索,比如说cat1,cat2和cat3

如果用户选择cat1和cat3进行搜索,则URL将如下所示: mysite.com/search.php?q=productname&cats=cat3,cat1

我希望重写网址看起来像以下形式: mysite.com/productsearch/cat1-cat3/productname

是否可以重写此规则并将-替换为,

1 个答案:

答案 0 :(得分:0)

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

应该关闭......

解析这个:

“找到后面的内容”search.php?q =“,最多为”&“,并将其放入缓冲区1

“找到”cat =“形式为”cat后跟一个数字“并用逗号分隔的两件事 - 将它们放入缓冲区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