2013-09-21 136 views
2

我想使用mod_rewrite從URL中刪除指定的查詢參數。使用mod_rewrite刪除參數

實施例: 1)用戶輸入URL:

http://localhost/intra/page.htm?var1=123&var2=456&var3=789 

2)的mod_rewrite刪除 「VAR2 = 456」

3)新的地址:

http://localhost/intra/page.htm?var1=123&var3=789 

我的問題是,即我只知道參數名稱(var2),而不是值(456), ,我知道參數的順序。它可能位於查詢字符串的開始處和結尾處。

我很感激任何幫助,因爲我在網上搜索了很多時間,卻沒有找到任何工作解決方案。

+0

可能的http://stackoverflow.com/questions/7756688/mod-rewrite-remove-a-get-variable –

+0

重複哪裏此參數來自何方,爲什麼你不能把它放在那裏呢? – Broxzier

回答

11

它是一個棘手的問題,因爲var2=anything確實可以出現在查詢字符串的任何位置。

此代碼應爲你工作:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} ^(.+?&|)var2=[^&]*(?:&(.*)|)$ [NC] 
RewriteRule^%{REQUEST_URI}?%1%2 [R=301,L] 
+0

爲什麼你需要(。+?&|),不會只是(。*&|)就足夠了?不。* =。+?本質上,還是我在這裏錯過了一些東西。事實上,不可能只是(。*) –

+0

是的你是對的。我多年前寫了這個答案。如果現在寫了,我會用不同的寫法:) – anubhava

+0

好的謝謝,只是想確保我沒有錯過任何東西。 –