在 Apache 中禁用 HTTP 方法并使用 mod_rewrite 强制 HTTP

Disabling HTTP methods and using Force HTTP with mod_rewrite in Apache

在 Apache 上的虚拟主机文件中,我想禁用 HTTP 方法并同时使用强制 https。 mod_rewrite 规则和条件将如何运作?我在虚拟主机文件中有以下内容。

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(OPTIONS|TRACE)
RewriteRule .* - [F]
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/ [L,R]

对于您提到的要求,您列出的重写似乎是正确的。第一个 Cond/Rule 对 returns 403 禁止使用 OPTIONS 或 TRACE 方法的任何请求。第二个 Cond/Rule 对将任何 http 请求重定向到 https 并保留原始主机名和 URI。

在 "ssl.conf" 文件中添加用于禁用 HTTP 选项方法的 mod-rewrite 规则解决了该问题。