【问题标题】:Apache Remove Specific Query StringsApache 删除特定的查询字符串
【发布时间】:2023-03-25 15:34:01
【问题描述】:

我想从任何 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

【问题讨论】:

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


    【解决方案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]
    

    【讨论】:

    • Anubhava,我需要从任何 URL 中删除查询字符串,而不仅仅是 page.html。我已经更新了问题以使其更清楚。
    • Anubhava - 我认为你是从字面上看这个例子,我需要删除 any url 的 URL 参数 - 而不仅仅是那些带有“page”的参数。所以 page.html、help.html、pickles.php - 任何 URL。
    • 哦,对不起,这是一个糟糕的复制/粘贴。请参阅我的更新答案。
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 2016-12-08
    • 2012-08-30
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多