Apache vhost 解析为 localhost 文档根目录
Posted
技术标签:
【中文标题】Apache vhost 解析为 localhost 文档根目录【英文标题】:Apache vhost resolves to localhost document root 【发布时间】:2012-05-03 09:07:53 【问题描述】:我从http://httpd.apache.org/download.cgi 下载了 apache2.2.22 src 并进行了安装。安装工作正常。但是当我尝试添加虚拟主机时,问题就出现了。我添加了 2 个虚拟主机 1.本地主机 2. someother.localhost 两者都指向不同的文档根目录,但解析到第一个虚拟主机的文档根目录。
这是我的虚拟主机文件,
名称虚拟主机 *: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 机器。请回复您的宝贵建议
【问题讨论】:
【参考方案1】:我立刻注意到你的文件和我从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 的示例中,您将看到他们的 hosts 条目示例,
ServerName bobpeers.live
ServerName bobpeers.dev
我希望反向名称live.bobpeers.local
是一个更清晰的服务器名称示例。这就是问题——我发现示例中存在不一致之处。有些示例根本不使用.local
之类的关键术语或遵循通用签名sub-domain.domaon.com
。复制一个人的非正常示例您可能会认为上面的 ServerName 引用了两个虚拟主机 live.local 和 dev.local。据我所知,也许他们会这样做!
关于虚拟主机的另一件事。手册页显示了这一点,
127.0.0.1 localhost
192.168.1.10 foo.mydomain.org foo
192.168.1.13 bar.mydomain.org bar
适用于我的本地主机沙箱的是这个,
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 掩码废话。 (^_^)
【讨论】:
【参考方案2】:我的建议: 声明一个“全局”ServerName 和一个全局 DocumentRoot, 然后在您的虚拟主机 http://httpd.apache.org/docs/2.0/mod/core.html#serveralias 中仅使用核心指令 ServerAlias。
【讨论】:
以上是关于Apache vhost 解析为 localhost 文档根目录的主要内容,如果未能解决你的问题,请参考以下文章