2009-10-17 115 views
1

我改变了我的网站平台,现在我从google获得点击,指向我网站上标记搜索的旧位置。基本上我需要指出:Nginx重写URI查询字符串值

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

到:

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

..in我的Nginx的网站文件。只有标签“音乐老歌”需要提取。 '主题%3A列表'实际上是'主题:列表'。

编辑: '......文章/主题为%3Alist ......' 应该是” .... '文章题目%3Alist ......'

+0

你为什么不只是搜索网址列表'=音乐Oldies'(不一定是使用正则表达式),如果找到匹配它重定向到新的网址是什么?该字符串是否会出现在url的其他部分?还是会有这个字符串的其他网址? – Amarghosh 2009-10-17 09:42:54

+0

对不起,它并不总是'音乐老',它可以是任何东西。但标签将始终是一个“主题:列表”变量。前一个平台是plone,出于某种原因,它使用'subject:list'按关键字(标签)过滤数据集 – 2009-10-18 02:57:03

回答

1

你需要这样的改写指令? :

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

尽管我感觉它很接近,但这似乎并不奏效。我甚至尝试过: rewrite [\?&] Subject:list =([^&] +)/ tags/$ 1 permanent; ..抓住查询字符串的任何部分,但仍然没有运气 – 2009-10-18 20:57:33

+0

很难确切地说出发生了什么。它可能是“主题”一词的大写字母吗?也许:重写[sS] ubject:list =([^&] +)/ tags/$ 1永久;为你工作? – windyjonas 2009-10-19 17:15:47

+0

经过在一个正则表达式工具中详尽地测试之后,它和一般的':'btw'subject'和'list'都可以很好地工作。我可以做出的唯一结论是nginx在测试之前不会将'%3A'解码回':' – 2009-10-20 18:13:57