在 Apache 中禁用 HTTP 方法

Gre*_*reg 11 apache-2.2

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

我已经尝试了LimitLimitExcept指令,但它们似乎发送了“403 Forbidden”。

我有几个虚拟主机 - 这应该是所有的,在主 httpd.conf 中。

Jan*_*nen 14

定义错误代码似乎真的比它应该的要困难一些。

但是,一种解决方法可能是使用mod_rewrite. 由于至少 99% 看起来不可能的 Apache 问题,mod_rewrite 可以提供它的巫毒舞蹈并解决您的问题,因此我突然想到了这一点。

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

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^GET [AND]
RewriteCond %{REQUEST_METHOD} !^POST 
RewriteRule .* /yourerrordocuments/405.html [R=405,L] 
Run Code Online (Sandbox Code Playgroud)

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

  • Mod_rewrite 还在每个 URL 进程上运行缓慢的正则表达式,这会降低服务器的速度。谨慎使用。 (6认同)