【问题标题】:what is the regular expression for URL rewriting in my case?在我的情况下,URL 重写的正则表达式是什么?
【发布时间】:2013-02-14 14:48:03
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您要切换cat3cat1 的顺序,还是打错字?
  • 不,原始和重写URL的顺序都不是必需的。

标签: regex apache url-rewriting


【解决方案1】:

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

【讨论】:

  • 我刚刚意识到你可能想使用 Apache 的 mod_rewrite 语法......所以这对你不起作用。我会在当天晚些时候再试一次。同时,也许有人可以从我上面的想法中得到灵感......
猜你喜欢
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
相关资源
最近更新 更多