2015-04-02 27 views
0

我在做什么的简短说明是:我需要为我的机器上的每个IP地址自动创建虚拟主机,使其指向vsftpd用户目录(/ home/xxx),并拒绝执行任何类型的脚本。如何在<VirtualHost>或httpd.conf文件中添加.htaccess规则

我想停止任何类型的网页,特别是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?你是个笨蛋”等等。

回答

3

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

When not to use .htaccess

现在,你可以把你的虚拟主机的指令。与您的文档根目录相同的位置。

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

上下文:服务器配置,虚拟主机,目录,.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> 
+0

感谢您的回复,@ panama-jack。关于目录,我使用var/www作为主站的主机。如果我有40个其他虚拟主机,所有在/ home /中,我只能为/ home /创建一个规则,还是需要为在vhost中指定的每个文档根添加一个条目,例如/ home/user/web 。这个规则也适用于每个子文件夹吗?编辑::测试,它只适用于/ home /的一个规则,如果您有任何要添加的东西,请这样做。再次感谢你 – aron9forever 2015-04-02 18:23:18

+0

如果你发现你使用父目录'/ home /',它应该可以工作。所以,如果这符合你的要求,那么你应该很好去。 :)没有更多的添加,如果它为你工作。我希望答案能帮助你。 – 2015-04-02 18:33:30