VirtualDocumentRoot和域总是路由到localhost - 为什么?

时间:2011-10-27 15:55:28

标签: apache httpd.conf vhosts document-root

我正在尝试让动态虚拟主机工作,遵循文档,但它没有完全奏效。

这些是来自我的HOSTS文件的域名:

127.0.0.1 walestourism.local.co.uk
127.0.0.1 www.walestourism.local.co.uk
127.0.0.2 walestourism.local.co.uk
127.0.0.2 www.walestourism.local.co.uk

这是来自httpd.conf:

NameVirtualHost 127.0.0.2
<VirtualHost 127.0.0.2>
ServerName www.walestourism.local.co.uk
ServerAlias walestourism.local.co.uk
DocumentRoot /www/walestourism.local.co.uk
ScriptAlias /cgi-bin/ /www/walestourism.local.co.uk/cgi-bin
</VirtualHost>

在我所有的其他代码中,上述代码的VirtualHost部分总是*:80。

我在httpd.conf中有这段代码:

<Directory C:/www/vhosts>   
Order Deny,Allow   
Allow from all 
AllowOverride All
</Directory>
<Directory C:/www/vhosts1>   
Order Deny,Allow   
Allow from all 
AllowOverride All
</Directory>
<Directory C:/www/vhosts.www>   
Order Deny,Allow   
Allow from all 
AllowOverride All
</Directory>
<Directory C:/www/test2>   
Order Deny,Allow   
Allow from all 
AllowOverride All
</Directory>
<Directory C:/www/>   
Order Deny,Allow   
Allow from all 
AllowOverride All
</Directory>

我应该如何修复此错误,因为当我输入域名时,我会看到http://localhost的内容?这是我尝试使用动态虚拟主机添加域时遇到的基本问题。

另外,如果我将浏览器指向“http:// localhost /”,我会得到默认的“It Works!”页面,所以我知道我的服务器正在运行,这肯定与vhosts配置有关。

我检查了我的错误日志 - 没有错误因此,所以为什么每个域都指向localhost,即使有为它们配置的文件夹(/ www /在这种情况下是C:/ www,我的Apache / webserver的目录)。

我是Apache的这个领域的新手,尽管有一个下午谷歌搜索,我不知道如何解决这个问题。

我决定尝试这样做以避免做cmd&gt;每次我添加一个新的虚拟主机进行测试时,httpd -k都会重启,但我做错了吗?

我在使用Windows 7的Apache 2.2上使用PHP 5.28 [在此提及规范]。

我该怎么办?

非常感谢所有建议!

2 个答案:

答案 0 :(得分:0)

当您使用基于命名的虚拟主机时,请不要使用127.0.0.2 ...只需将其全部保留到127.0.0.1 ...如果失败,请检查error_log中的apache(在httpd.conf中定义)麻烦拍摄为什么它失败了。

此外,在开始使用PHP之前,让Apache2使用VHosts 在Windows上运行...

根据http://httpd.apache.org/docs/2.0/vhosts/examples.html

 # Ensure that Apache listens on port 80
 Listen 80

 # Listen for virtual host requests on all IP addresses
 NameVirtualHost *:80

 <VirtualHost *:80>
 DocumentRoot /www/example1
 ServerName www.example1.com
 # Other directives here
 </VirtualHost>

 <VirtualHost *:80>
 DocumentRoot /www/example2
 ServerName www.example2.org
 # Other directives here
 </VirtualHost>

答案 1 :(得分:0)

如果虚拟主机配置错误,通常会发生这种情况。当你在Windows上我不知道如何测试你的配置,在linux上你会做类似的事情:

/etc/init.d/httpd configtest

尝试从命令行启动apache,看看是否有任何错误。如果Apache作为服务安装,您可以在Windows应用程序事件日志中看到启动错误。