0

我有一个搜索引擎,我希望搜索查询的 URL 更易于阅读。引擎支持在选定类别中搜索,比如 cat1 、cat2 和 cat3

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

我希望重写 url 看起来像下面的形式: mysite.com/productsearch/cat1-cat3/productname

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

4

1 回答 1

0

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

应该很近...

解析这个:

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

“找到“cats=”后面的两个东西,形式为“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
于 2013-02-14T14:56:38.060 回答