我设法通过启用NameVirtualHost来设置几个VirtualHost。这是我的vhosts.conf的顶部部分
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mysite.local
...
</VirtualHost>
问题是当我访问http://localhost
时,我得到默认的“它有效!”。如果我转到http://127.0.0.1/
,则默认为http://mysite.local
我从Apache Docs了解到为什么它默认为mysite.local(匹配第一个VirtualHost)。但我曾经能够去http://localhost/phpmyadmin/
。
我怎样才能得到这个?我是否需要制作我的第一个VirtualHost本地主机?那似乎不对......
在Mac OS X(10.6.6)上运行apache 2.2.15。
如果我从hosts文件中注释掉以下行,则localhost和127.0.0.1都会转到同一个地方。我在访问日志中验证它确实使用了:: 1。
::1 localhost
fe80::1%lo0 localhost
所以我认为处理第一个问题,只要这样可以吗?但是如何让localhost转到我的默认DocumentRoot?
答案 0 :(得分:3)
我怎样才能得到这个?我是否需要制作我的第一个VirtualHost本地主机?那似乎不对......
我是这样做的,似乎所有工作都很好,不需要额外的端口来监听。
第一个VirtualHost块 处理任何不指向我设置的2个虚拟机(第2和第3个VirtualHost块)之一的URL:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/"
ServerName localhost
ServerAlias localhost
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/imputation/dirmaster/http/"
ServerName imputation.loc
<Directory "/Applications/XAMPP/xamppfiles/htdocs/imputation/dirmaster/http/">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/documentatiebestand/"
ServerName documentatiebestand.loc
<Directory "/Applications/XAMPP/xamppfiles/htdocs/documentatiebestand/">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
答案 1 :(得分:2)
不,您不能将VirtualHosts与“经典”配置混合使用。 您可以侦听另一个端口并定义另一个VirtualHost(例如*:8080)“模拟”您之前的“localhost”转到您的一般DocumentRoot声明。
这样的事情:
Listen 80 (already declared elsewhere)
Listen 8080
NameVirtualHost *:80
NameVirtualHost *:8080
<VirtualHost *:80>
ServerName mysite.local
...
</VirtualHost>
<VirtualHost *:8080>
ServerName localhost
DocumentRoot /same/as/the/classic/one/
...
</VirtualHost>
你也可以声明一些Alias / phpmyadmin /这是全局的我不建议使用别名,因为你的一个vhosts中没有另一个phpmyadmin文件夹。
你当然可以定义一个phpmyadmin.local vhost; - )