如何专门禁用 .htaccess 中使用的某些 Apache 模块指令

如何专门禁用 .htaccess 中使用的某些 Apache 模块指令

我是一名网络托管商和网站所有者。

作为托管商,我想禁止客户使用 .htaccess 中的某些模块指令。

由于某些网站充当 CDN,因此我想禁用 mod_mime 中的 AddHandler(以及其他一些功能)。这样即使上传了 php 文件,也无法执行。

但像 mod_rewrite 中的 RewriteRule 这样的指令仍然很好。

用伪代码来解释:

AllowOverride All -mod_mime -DocumentRoot -CustomLog -ErrorLog

文件 https://httpd.apache.org/docs/2.2/mod/mod_mime.html#AddHandler 说上下文是 .htaccess,我可以限制此模块指令的上下文吗?我不怕修补或重新编译它。

我该如何解决这个问题?谢谢!

答案1

答案确实就在我眼皮底下。

但是你需要 Apache 2.4

https://httpd.apache.org/docs/current/mod/core.html#allowoverridelist

<Directory /var/www/vhosts>
    AllowOverride None
    AllowOverrideList RewriteEngine RewriteOptions RewriteBase RewriteCond RewriteRule
    Require all granted
</Directory>

仅允许 AllowOverrideList 中指定的指令。所有其他指令将导致内部服务器错误。

虽然对整个模块执行相同操作的功能仍未实现,但对我来说这是一个足够好的解决方案。

再次感谢 SF

答案2

DocumentRootCustomLog并且ErrorLog在 .htaccess 中已经不可用,所以这不是问题。

据我所知,没有办法专门禁用所有 mod_mime。您必须禁用所有 FileInfo,这可能不是您想要的。

<Directory /var/www/vhosts>
   AllowOverride  All -FileInfo
   RemoveHandler .php
</Directory>

相关内容