Apache删除特定的查询字符串

时间:2015-03-28 12:53:52

标签: regex apache mod-rewrite url-rewriting query-string

我想从任何网址中删除特定的查询字符串,留下其他查询字符串,以及第一个与后续字符串(?对比&)的帐户。我只想删除以下网址参数:

运动 外部

考虑到这些网址参数可能存在于网址中的任何位置这一事实非常重要,因此剩下的参数可能需要翻转到"?"来自"&"。

以下是一些例子:

Original: www.domain.com/page.html?campaign=123
Modified: www.domain.com/page.html

Orig: www.domain.com/page2.html?campaign=123&flow=shop
Mod: www.domain.com/page2.html?flow=shop

Orig: www.domain.com/page6.html?flow=account&campaign=123&entry=1&external=google
Mod: www.domain.com/page6.html?flow=shop&entry=1

1 个答案:

答案 0 :(得分:1)

您可以在DOCUMENT_ROOT/.htaccess文件中使用此代码:

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^(?:(.+?)&)?(?:external|campaign)=[^&]*$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(?:external|campaign)=[^&]*(?:&(.*))?$ [NC]
RewriteRule ^ %{REQUEST_URI}?%1 [L,NE,NC,R=302]

RewriteCond %{QUERY_STRING} ^(?:(.+?)&)?(?:external|campaign)=[^&]*(&.*)?$ [NC]
RewriteRule ^ %{REQUEST_URI}?%1%2 [L,NE,NC,R=302]