Apache:除了通过 vhost 之外,我可以禁止访问目录吗?

Apache:除了通过 vhost 之外,我可以禁止访问目录吗?

假设我有一台服务器,machinename.ip它解析http://machinename.ip为默认根目录(/var/www/html),并http://www.example.com 通过 vhosts 文件解析www.example.com/var/www/html/example

有没有简单的方法可以禁止访问该/var/www/html/example文件夹(以及任何子目录/文件)除了通过www.example.comvhost?即,当通过添加特定的 vhost URL 时,您可以访问它们,因此,但是www.example.com或任何其他组合都不会将您带到那里或任何子目录?/var/www/html/examplehttp://machinename.ip/example

例如对于文件/var/www/html/example/myfile.php

http://www.example.com/myfile.php *yay works*

http://machinename.ip/example/myfile.php *does not*

答案1

你可以这样做:httpd.conf

<Directory "/var/www/html">
  Deny from all
</Directory>

然后在vhosts.conf文件内的某处添加一些<Directory标记(像这样)

<VirtualHost...{blah}
  # | ADD THIS
  # v
  <Directory "/var/www/html/example">
     AllowOverride None
     Order allow,deny
     Allow from all
  </Directory>
  # ^
  # | ADD THIS
  {...blah near where you may have something like...}
  DocumentRoot /var/www/html/example
  ServerAlias example.com
</VirtualHost>

你必须对所有的虚拟主机进行这些阻止,但如果你愿意忍受这一点,那么这个就可以了

答案2

当然可以。我使用的大多数 Web 服务器都有指向 的默认主机,/var/www/default/并且所有域名都发送到/var/www/[domain]example.com例如/var/www/example.com/

默认 Apache 配置不是这样的,但您通常可以通过 mkdir -p /var/www/default调整默认配置指向的目录来克服这个问题。

相关内容