我从http://httpd.apache.org/download.cgi下载了apache2.2.22 src并进行了安装。安装工作正常。但是当我尝试添加虚拟主机时会出现问题。我添加了2个虚拟主机 1. localhost 2. someother.localhost 两者都指向不同的文档根,但是解析为第一个虚拟主机的doc根。
这是我的vhost文件,
NameVirtualHost *:80
<VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/webserver/htdocs" ServerName localhost ErrorLog "logs/localhost-error_log" CustomLog "logs/localhost-access_log" common </VirtualHost> <Directory /home/sourabhn/somepath> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/home/sourabhn/somepath" ServerName someother.localhost ErrorLog "logs/someother-localhost-error_log" CustomLog "logs/someother-localhost-access_log" common </VirtualHost>
我在hosts文件中输入了相应的条目。我正在运行Ubuntu 11.10机器。请回复您的宝贵建议
答案 0 :(得分:2)
我立刻注意到你的文件和我从bobpeers这样的网络教程拼凑而成的文件之间存在差异。我在虚拟主机块中添加了<Directory>
块。
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/
ServerName xtiansimonslaptop.local
<Directory "/var/www/">
Allow from all
Options +Includes +Indexes +FollowSymLinks
AllowOverride all
</Directory>
</VirtualHost>
我正在研究Drupal,所以我可以将一个名称解析为Drupal目录,它会处理剩下的事情。在Drupal安装中,我有几个项目,每个项目都在一个Drupal安装中设置了自己的域名。下面是一个名为hello.local的Drupal站点示例,另一个Drupal站点可能是cheese.local。两者都指向同一目录。
<VirtualHost *:80>
DocumentRoot /var/www/php/drupal7
ServerName hello.local
# ServerAlias *.hello.local
<Directory "/var/www/php/drupal7">
Allow from all
Options +Includes +Indexes +FollowSymLinks
AllowOverride all
</Directory>
</VirtualHost>
现在它的工作保存为注释行ServerAlias。这引出了我学习设置vHosts的另一个观点。 / etc / hosts文件对于正确设置非常重要。
在bobpeers的示例中,您将看到他们的主机条目示例
ServerName bobpeers.live
ServerName bobpeers.dev
我希望反向名称live.bobpeers.local
是服务器名称的更清晰的示例。这就是事情 - 我发现例子中存在不一致之处。有些示例根本不使用.local
等关键字词,也不使用通用签名sub-domain.domaon.com
。复制一个非正常示例您可能认为上述ServerName引用了两个虚拟主机live.local和dev.local。据我所知,也许他们这样做了!
关于vHosts还有一件事。手册页显示了这一点,
127.0.0.1 localhost
192.168.1.10 foo.mydomain.org foo
192.168.1.13 bar.mydomain.org bar
对我的localhost沙箱有用的是
127.0.0.1 localhost
127.0.0.1 mydomain.local mydomain
127.0.0.1 foo.mydomain.local foo
127.0.0.1 bar.mydomain.local bar
这似乎是正确的,因为基于名称应该对它进行排序,而不是这个192.168.1.x IP Mask无意义。 (^ _ ^)
答案 1 :(得分:0)
我的建议: 声明一个“全局”ServerName和一个全局DocumentRoot, 然后只使用vhost http://httpd.apache.org/docs/2.0/mod/core.html#serveralias中的核心指令ServerAlias。