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

时间:2015-04-02 10:49:23

标签: apache .htaccess httpd.conf

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

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

我四处搜寻,发现了这个

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

但这是.htaccess内容。如何实现仅在httpd.conf文件中允许某些扩展的功能?使用.htaccess会带来很大的痛苦,因为用户可能会编辑风险。

请不要提出任何与我的问题无关的评论,例如“sudo apache?你是个笨蛋”等等。

1 个答案:

答案 0 :(得分:3)

没有.htaccess这样的东西只有内容。这是一个巨大的误解。大多数时候你做 NOT 想要使用.htaccess,Apache建议你除非必要,否则不要使用它。 Apache规则总是可以放在服务器配置中。

When not to use .htaccess

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

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

  

上下文:服务器配置,虚拟主机,目录,.htaccess

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

因此,在您的vhost文件中,您可以像这个示例一样添加Directory指令。

<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>