【问题标题】:How to add .htaccess rules inside <VirtualHost> or inside the httpd.conf file如何在 <VirtualHost> 或 httpd.conf 文件中添加 .htaccess 规则
【发布时间】:2015-06-07 07:08:31
【问题描述】:

对我正在做的事情的简短解释是:我需要为我机器上的每个 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 会很痛苦,而且还有风险,因为用户可能会编辑它们。

请不要使用与我的问题无关的任何 cmets,例如“sudo apache?你是个笨蛋”等等。

【问题讨论】:

    标签: apache .htaccess httpd.conf


    【解决方案1】:

    没有 .htaccess 唯一的内容。这是一个巨大的误解。大多数时候您想要使用.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>
    

    【讨论】:

    • 感谢@panama-jack 的回复。关于目录,我使用 var/www 作为 box 主机的主网站。如果我有 40 个其他虚拟主机,都在 /home/ 中,我可以只为 /home/ 制定一个规则,还是需要为 vhost 中指定的每个文档根目录添加一个条目,例如 /home/user/web .此规则也适用于每个子文件夹吗? Edit:: 经过测试,它仅适用于 /home/ 的一条规则,如果您有任何要添加的内容,请添加。再次感谢您
    • 如果您发现使用父目录/home/,它应该可以工作。因此,如果这符合您的要求,那么您应该很高兴。 :) 如果它对您有用,无需再添加任何内容。希望答案对您有所帮助。
    猜你喜欢
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2016-09-06
    • 2018-12-25
    • 1970-01-01
    相关资源
    最近更新 更多