htaccess规则删除参数

时间:2015-07-13 13:37:34

标签: apache .htaccess mod-rewrite

努力想出一个.htaccess规则来从中删除参数。 基本上我想要

http://www.example.com/page/competition.html?utm_medium=email&utm_campaign=11&utm_source=11&utm_term=11.gif

重写为

http://www.example.com/page/competition.html

因此,重写/page/compeition.html中的任何内容。 感谢任何帮助。提前谢谢

3 个答案:

答案 0 :(得分:1)

在您的问题中,您声明要将长URI 重写更短。不幸的是,这不是很清楚。假设您希望只使用重定向删除查询字符串,则可以使用以下内容:

RewriteCond %{QUERY_STRING} ^utm_medium=email&utm_campaign=([^&]+)&utm_source=([^&]+)&utm_term=([^&]+)$
RewriteRule ^ %{REQUEST_URI}? [R=302,L]

这是一个通用条件和规则,用于检查查询字符串中的任何utm信息。如果它存在,则删除查询字符串。

如果您只想对page/competition.html执行此操作,请将规则更改为:

RewriteRule ^(page/competition\.html)$ /$1? [R=302,L]

如果您只想删除构成page/competition.html请求一部分的任何查询字符串,那么您可以使用此字符代替上述内容:

RewriteCond %{QUERY_STRING} !^$
RewriteRule ^(page/competition\.html)$ /$1? [R=302,L]

这基本上告诉Apache检查查询字符串是否为空,如果不是,则将其全部删除。

要使重定向成为永久性,请将302更改为301

答案 1 :(得分:0)

作为一般规则,您应该能够使用以下内容:

RewriteRule ^(.*)$ $1? [END,QSA]

此规则中的关键字是出现在输出网址中的尾随问号。

  

RewriteRule ^(。*)$ $ 1? [结束,QSA]这个规则得到满足,新的网址是   http://www.example.com/page/competition.html

尝试以下内容:

http://htaccess.madewithlove.be/

答案 2 :(得分:-1)

您是否只想要特定页面?或者更多作为一般方法?

RewriteRule ^page/competition.html?(.+)$ /page/competition.html [L,NC]

这将是实现它的最简单的形式,但只适用于确切的文件名。对于更通用的方法,您需要添加更多占位符。