如何在 <VirtualHost> 或 httpd.conf 文件中添加 .htaccess 规则

How to add .htaccess rules inside <VirtualHost> or inside the httpd.conf file

对我正在做的事情的简短解释是:我需要为我机器上的每个 IP 地址自动创建虚拟主机,使其指向 vsftpd 用户目录 (/home/xxx) 并拒绝任何类型的正在执行的脚本。

我想停止执行任何类型的网页,尤其是 PHP 脚本,因为这会 post 巨大的安全风险(apache 是 sudo)。这个虚拟主机的目的纯粹是为了提供游戏资源文件,扩展名如 .wav 、 .mdl 、 .tga 、 .spr 等等。

我四处搜索,找到了这个

deny from all 
<filesmatch "\.(avi¦wmv¦mpg¦mov)$"> 
Allow from all 
</filesmatch> 

但这是.htaccess 内容。我怎样才能实现这个只允许在我的 httpd.conf 文件中进行某些扩展的功能?让它使用 .htaccess 会很痛苦,而且会有风险,因为用户可能会编辑它们。

请勿发表与我的问题无关的评论,如"sudo apache? you're a dumbass"等

不存在仅 .htaccess 内容。这是一个巨大的误解。大多数时候你 NOT 想要使用 .htaccess 并且 Apache 建议你除非必要不要使用它。 Apache 规则始终可以放在服务器配置中。

When not to use .htaccess

现在您可以将其放入 VirtualHost 指令中。定义文档根目录的位置相同。

可在这些上下文中使用 FilesMatch 指令。

Context: server config, virtual host, directory, .htaccess

http://httpd.apache.org/docs/current/mod/core.html#filesmatch

因此,在您的虚拟主机文件中,您可以像本示例一样添加目录指令。

<Directory /path/to/documentroot/>
   Deny from all 
  <FilesMatch "\.(avi|wmv|mpg|mov)$"> 
   Allow from all 
  </FilesMatch> 
</Directory>

如果您正在使用 Apache 2.4,那么您需要使用 Require

<Directory /path/to/documentroot/>
   Require all denied
  <FilesMatch "\.(avi|wmv|mpg|mov)$"> 
   Require all granted 
  </FilesMatch> 
</Directory>