2013-09-21 94 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

好的谢谢,只是想确保我没有错过任何东西。 –