如果我们假设我有一个名为machinename.ip
的服务器,它将http://machinename.ip
parsing为默认根目录( /var/www/html
),并通过vhosts文件www.example.com
parsinghttp://www.example.com
www.example.com
到/var/www/html/example
有没有简单的方法来禁止访问/var/www/html/example
文件夹(和任何subdirs /文件), 除了通过www.example.com
虚拟主机? 即当通过添加特定的虚拟主机URL时,您可以访问它们,以便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>
你必须为所有的虚拟主机做这些块,但如果你准备忍受,这将做到这一点
当然你可以做到这一点。 我使用的大多数Web服务器的默认主机都指向/var/www/default/
,所有域都被发送到/var/www/[domain]
,例如example.com
位于/var/www/example.com/
。
默认的Apacheconfiguration不是这样的,但是你通常可以通过mkdir -p /var/www/default
来克服,并且调整默认configuration指向的目录。