我正在尝试从Apache中删除动态URI的一部分。我尝试了不同的重写规则,但没有任何进展。我能够使用查询字符串清理URL,但删除accessdenied之后的任何内容,但我们需要应用程序工作的组部分。URI结尾为:accessdenied?group=test&oam_res=...&oam_res之后的任何内容都应该删除。
accessdenied
accessdenied?group=test&oam_res=...
&oam_res
t9aqgxwy1#
这个问题有点模糊,但我想这会给你指出正确的方向:
RewriteEngine on RewriteCond %{QUERY_STRING} ^([^&]*&)*oam_res= RewriteRule ^/?accessdenied$ /accessdenied?%1 [R=301]
请注意,这实现了一个 * 外部 * 重定向,因此它更改了客户端(浏览器)中可见的URL。如果你只想做一个 * 内部 * 重写,那么你需要用[L]标志替换[R=301]标志。要做到这一点,你显然需要在http服务器上安装、加载并启用重写模块。如果你想使用一个动态配置文件(.htaccess),你也需要使用AllowOverride指令来启用它的解释。但是你应该总是倾向于将这样的规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess风格的文件)。这些文件是出了名的容易出错,很难调试,他们真的放慢了服务器。只有在您无法控制主机配置的情况下,才支持将它们作为最后一个选项(请阅读:真正便宜的托管服务提供商),或者如果您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦)。
[L]
[R=301]
.htaccess
AllowOverride
1条答案
按热度按时间t9aqgxwy1#
这个问题有点模糊,但我想这会给你指出正确的方向:
请注意,这实现了一个 * 外部 * 重定向,因此它更改了客户端(浏览器)中可见的URL。如果你只想做一个 * 内部 * 重写,那么你需要用
[L]
标志替换[R=301]
标志。要做到这一点,你显然需要在http服务器上安装、加载并启用重写模块。如果你想使用一个动态配置文件(
.htaccess
),你也需要使用AllowOverride
指令来启用它的解释。但是你应该总是倾向于将这样的规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess
风格的文件)。这些文件是出了名的容易出错,很难调试,他们真的放慢了服务器。只有在您无法控制主机配置的情况下,才支持将它们作为最后一个选项(请阅读:真正便宜的托管服务提供商),或者如果您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦)。