2012-03-09 33 views
18

我重新開張後重寫nginx的網址。在舊網站中,我在網址中有查詢參數來過濾東西,例如刪除nginx的內參數改寫

http://www.example.com/mypage.php?type=4 

新頁面沒有這些參數。我想刪除和重寫的URL到主頁面,讓我得到:

http://www.example.com/mypage/ 

我在nginx的重寫規則是:

location ^~ /mypage.php { 
    rewrite ^/mypage.php$ http://www.example.com/mypage permanent; 
} 

但這一規則的參數仍然是追加。我認爲$會阻止nginx處理更多的值...任何想法?所有其他問題處理如何添加參數 - 我只是想刪除我的:)

回答

33

有一個類似的問題,經過大量的搜索答案出現在rewrite docs本身。

如果指定了?在重寫的末尾,則Nginx的將丟棄原來的$ args(參數)

因此,對於你的榜樣,這會做的伎倆:

location ^~ /mypage.php { 
    rewrite ^/mypage.php$ http://www.example.com/mypage? permanent; 
} 
+0

你比我有更好的閱讀能力;)非常感謝! – 2012-03-27 17:52:57

+10

我想放棄一個特定的參數。 – virsir 2012-03-31 13:56:54

+0

等待,這個規則不會導致重定向循環嗎? – defbyte 2015-12-16 18:57:55

6

要從URL刪除一個參數,在這種情況下coupon=xxx

if ($query_string ~ "^(.*)coupon=(.*)$") { 
    rewrite ^(.*)$ $uri? permanent; 
} 

注意,如果 聲明一致,這將放棄所有參數。 $uri是沒有參數的原始請求。

2

嘗試將$args變量裏面的位置空。

set $args '';