2015-07-13 92 views

回答

-1

你想只为特定页面?或更多作为一般方法?

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

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

+1

不正确 - 'mod_rewrite'不会将查询字符串公开给规则。此外,您的规则是倒退 - OP希望查询字符串基本上被隐藏,但仍然是请求的一部分。我可能会误解,但在问题中使用* rewrite *这个词指向那个方向。 –

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