在 Apache 中禁用 HTTP 方法

在 Apache 中禁用 HTTP 方法

如何禁用某些 HTTP 方法(例如 PUT 或 TRACE)并让 Apache 发送 HTTP“405 方法不允许”。

我试过了限制限制除外指令,但他们似乎发送“403 Forbidden”。

我有几个 vhost - 这应该涵盖所有 vhost,在主 httpd.conf 中。

答案1

看起来,定义错误代码确实比想象的要难一些。

但是,一种解决方法可能是使用mod_rewrite。我之所以会想到这个,是因为在至少 99% 看似不可能的 Apache 问题中,mod_rewrite 可以提供它的巫术舞蹈并解决您的问题。

如果其他一切都失败了,请尝试类似

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^GET [AND]
RewriteCond %{REQUEST_METHOD} !^POST 
RewriteRule .* /yourerrordocuments/405.html [R=405,L] 

我知道这可能不是最好的解决方案,但它应该种工作……

答案2

对于跟踪方法你可以添加这个

TraceEnable off

在你的主配置文件中

答案3

要启用重写引擎,请添加以下内容:

 RewriteEngine On 

请注意,默认情况下,重写配置不会在虚拟服务器之间继承。将 RewriteEngine On 添加到每个虚拟主机。

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]

相关内容