Apache-2.2

Apache:我可以禁止訪問目錄,除非通過虛擬主機?

  • August 26, 2014

如果我們假設我有一個名為的伺服器machinename.ip,它解析http://machinename.ip為預設根 ( /var/www/html),並http://www.example.com 通過 vhosts 文件解析www.example.com/var/www/html/example

除了通過虛擬主機之外,是否有一種簡單的方法可以禁止訪問/var/www/html/example文件夾(以及任何子目錄/文件) ?即,當通過特定的虛擬主機 url 添加時,您可以訪問它們,這樣會轉到但或任何其他組合不會帶您到那里或任何子目錄?www.example.com``www.example.com``/var/www/html/example``http://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*

你可以這樣做:在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>

你必須為你所有的虛擬主機做這些塊,但如果你準備好忍受它,這將做到

引用自:https://serverfault.com/questions/623914