我有一个搜索引擎,我希望搜索查询的 URL 更易于阅读。引擎支持在选定类别中搜索,比如 cat1 、cat2 和 cat3
如果用户选择 cat1 和 cat3 进行搜索,则 URL 将如下所示:
mysite.com/search.php?q=productname&cats=cat3,cat1
我希望重写 url 看起来像下面的形式:
mysite.com/productsearch/cat1-cat3/productname
是否可以重写此规则并替换-
为,
?
我有一个搜索引擎,我希望搜索查询的 URL 更易于阅读。引擎支持在选定类别中搜索,比如 cat1 、cat2 和 cat3
如果用户选择 cat1 和 cat3 进行搜索,则 URL 将如下所示:
mysite.com/search.php?q=productname&cats=cat3,cat1
我希望重写 url 看起来像下面的形式:
mysite.com/productsearch/cat1-cat3/productname
是否可以重写此规则并替换-
为,
?
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