从Apache中删除动态查询字符串

cclgggtu  于 8个月前  发布在  Apache
关注(0)|答案(1)|浏览(75)

我正在尝试从Apache中删除动态URI的一部分。我尝试了不同的重写规则,但没有任何进展。我能够使用查询字符串清理URL,但删除accessdenied之后的任何内容,但我们需要应用程序工作的组部分。
URI结尾为:
accessdenied?group=test&oam_res=...
&oam_res之后的任何内容都应该删除。

t9aqgxwy

t9aqgxwy1#

这个问题有点模糊,但我想这会给你指出正确的方向:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^([^&]*&)*oam_res=
RewriteRule ^/?accessdenied$ /accessdenied?%1 [R=301]

请注意,这实现了一个 * 外部 * 重定向,因此它更改了客户端(浏览器)中可见的URL。如果你只想做一个 * 内部 * 重写,那么你需要用[L]标志替换[R=301]标志。
要做到这一点,你显然需要在http服务器上安装、加载并启用重写模块。如果你想使用一个动态配置文件(.htaccess),你也需要使用AllowOverride指令来启用它的解释。但是你应该总是倾向于将这样的规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess风格的文件)。这些文件是出了名的容易出错,很难调试,他们真的放慢了服务器。只有在您无法控制主机配置的情况下,才支持将它们作为最后一个选项(请阅读:真正便宜的托管服务提供商),或者如果您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦)。

相关问题