2009-10-17 147 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