Apache 删除特定的查询字符串
Apache Remove Specific Query Strings
我想从任何 URL 中删除特定的查询字符串,保留其他查询字符串,并考虑第一个与后续字符串(?与 &)。我只想删除以下 URL 参数:
活动
外部
重要的是要考虑到这些 URL 参数可能存在于 URL 中的任何位置,因此可能需要将其余参数翻转为“?”从 ”&”。
这里有几个例子:
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
您可以在 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]
我想从任何 URL 中删除特定的查询字符串,保留其他查询字符串,并考虑第一个与后续字符串(?与 &)。我只想删除以下 URL 参数:
活动 外部
重要的是要考虑到这些 URL 参数可能存在于 URL 中的任何位置,因此可能需要将其余参数翻转为“?”从 ”&”。
这里有几个例子:
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
您可以在 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]