【问题标题】:Nginx rewrite for URI querystring valueNginx 重写 URI 查询字符串值
【发布时间】:2010-12-07 13:42:24
【问题描述】:

我更改了我的网站平台,现在我从谷歌获得点击,指向我网站上标签搜索的旧位置。基本上我需要指出:

http://www.website.com/articles/Subject%3Alist=Music-Oldies&review_state=published

到:

http://www.website.com/tags/Music-Oldies 

..在我的 Nginx 网站文件中。只需要提取标签“Music-oldies”。 'Subject%3Alist' 实际上是 'subject:list'。

编辑:'....articles/subject%3Alist...' 应该是 '....'articles?subject%3Alist....'

【问题讨论】:

  • 为什么不直接在 url 中搜索list=Music-Oldies(不一定使用正则表达式)并在找到匹配项时将其重定向到新的 url?该字符串会出现在网址的其他部分吗?或者这个字符串会有其他网址吗?
  • 抱歉,它并不总是“老歌”,它可以是任何东西。但标签将始终是一个“主题:列表”变量。前一个平台是克隆的,出于某种原因,它使用“主题:列表”按关键字(标签)过滤数据集

标签: regex nginx rewrite


【解决方案1】:

你需要这样的重写指令:

rewrite Subject:list=([^&]+) /tags/$1 permanent;

【讨论】:

  • 这似乎不起作用,尽管我觉得它很接近。我什至尝试过:重写 [\?&]Subject:list=([^&]+) /tags/$1 永久; ..在查询字符串的任何部分捕获它,但仍然没有运气
  • 很难说到底发生了什么。会不会是“主题”这个词的大写?也许:重写 [sS]object:list=([^&]+) /tags/$1 永久;适合你吗?
  • 在正则表达式工具中对此进行了详尽的测试后,它与实际的 ':' btw 'subject' 和 'list' 配合得很好。我能得出的唯一结论是 nginx 在测试之前没有将 '%3A' 解码回 ':'
猜你喜欢
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 2011-02-01
  • 2012-10-26
相关资源
最近更新 更多