我是一名网络托管商和网站所有者。
作为托管商,我想禁止客户使用 .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
DocumentRoot
,CustomLog
并且ErrorLog
在 .htaccess 中已经不可用,所以这不是问题。
据我所知,没有办法专门禁用所有 mod_mime。您必须禁用所有 FileInfo,这可能不是您想要的。
<Directory /var/www/vhosts>
AllowOverride All -FileInfo
RemoveHandler .php
</Directory>