Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 删除参数的htaccess规则_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 删除参数的htaccess规则

Apache 删除参数的htaccess规则,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,努力想出一个.htaccess规则来删除其中的参数。 基本上我想要 改写 因此,/page/competition.html中的任何内容都会被重写。 谢谢你的帮助。提前感谢您是否只想在特定页面上使用此功能?还是更一般的做法 RewriteRule ^page/competition.html?(.+)$ /page/competition.html [L,NC] 这将是实现它的最简单的形式,但只适用于确切的文件名。对于更一般的方法,您需要添加更多的占位符。作为一般规则,您应该能够使用以下内

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

改写

因此,/page/competition.html中的任何内容都会被重写。
谢谢你的帮助。提前感谢

您是否只想在特定页面上使用此功能?还是更一般的做法

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

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

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

RewriteRule ^(.*)$ $1? [END,QSA]
此规则中的键是后面的问号,它不会出现在输出URL中

重写规则^(.*)$$1?[结束,QSA]满足此规则,新url为

请在以下位置尝试:

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

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

RewriteRule ^(.*)$ $1? [END,QSA]
RewriteCond%{QUERY\u STRING}^utm\u medium=email&utm\u活动=([^&]+)&utm\u源=([^&]+)&utm\u术语=([^&]+)$
重写规则^%{REQUEST_URI}?[R=302,L]
这是一个通用条件和规则,将检查查询字符串中的任何
utm
信息。如果存在,则去掉查询字符串

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

RewriteRule^(page/competition\.html)$/$1?[R=302,L]
如果您只想删除构成对
page/competition.html
请求一部分的任何查询字符串,则可以使用此字符串而不是上述字符串:

RewriteCond%{QUERY\u STRING}^$
重写规则^(page/competition\.html)$/$1?[R=302,L]
这基本上告诉Apache检查查询字符串是否为空,如果不是,则将其全部删除


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

请共享您尝试过的内容。不正确的-
mod_rewrite
不会将查询字符串暴露给规则。此外,您的规则是向后的-OP希望查询字符串本质上是隐藏的,但仍然是请求的一部分。我可能弄错了,但问题中使用的“重写”一词将我引向了那个方向。