努力想出一个.htaccess规则来从中删除参数。 基本上我想要
重写为
http://www.example.com/page/competition.html
因此,重写/page/compeition.html中的任何内容。 感谢任何帮助。提前谢谢
答案 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
尝试以下内容:
答案 2 :(得分:-1)
您是否只想要特定页面?或者更多作为一般方法?
RewriteRule ^page/competition.html?(.+)$ /page/competition.html [L,NC]
这将是实现它的最简单的形式,但只适用于确切的文件名。对于更通用的方法,您需要添加更多占位符。