我有下一个Apache虚拟主机和NameVirtualHost设置:
NameVirtualHost 10.100.106.89 <VirtualHost 10.100.106.89> DocumentRoot /var/www/html/dev/novared_soporte/branches/v0.3/soporte ServerName 10.100.106.89 </VirtualHost> <VirtualHost 10.100.106.89> DocumentRoot /var/www/html/phpmyadmin ServerName 10.100.106.89/phpmyadmin ServerAlias 10.100.106.89/pma </VirtualHost> <VirtualHost 10.100.106.90> ServerName 10.100.106.90 DocumentRoot /var/www/html </VirtualHost>
当我试图达到: 10.100.106.89我可以到我需要的网站: /var/www/html/dev/novared_soporte/branches/v0.3/soporte
但是当我试图达到10.100.106.89/phpmyadmin我实际上得到error_log.txt(httpd日志)上的这个错误:
[Thu Jun 28 12:12:59 2012] [error] [client 10.100.103.31] File does not exist: /var/www/html/dev/novared_soporte/branches/v0.3/soporte/phpmyadmin
我仍然不能得到错误的地方。 顺便说一句, 10.100.106.90正常工作,至less对于它的DocumentRoot /var/www/html
你不能有一个服务器名称包含除FQDN以外的其他任何东西 – 不要把它放在/它 – 它根本不会被解释。
考虑这样做,然后只是添加HOSTS文件条目
<VirtualHost 10.100.106.89> DocumentRoot /var/www/html/dev/novared_soporte/branches/v0.3/soporte ServerName www.example.com </VirtualHost> <VirtualHost 10.100.106.89> DocumentRoot /var/www/html/phpmyadmin ServerName phpmyadmin.example.com </VirtualHost>
然后在你的HOSTS文件中添加
10.100.106.89 www.example.com 10.100.106.89 phpmyadmin.example.com
您可以按照IETF指南自由使用example.com
或者将两个vhosts合并成一个vhost
<VirtualHost 10.100.106.89> DocumentRoot /var/www/html/dev/novared_soporte/branches/v0.3/soporte ServerName 10.100.106.89 ServerAlias www.example.com Alias /phpmyadmin /var/www/html/phpmyadmin </VirtualHost>
你说了10.100.106.89的DocumentRoot两次,你必须使用phpmyadmin的别名
NameVirtualHost 10.100.106.89 <VirtualHost 10.100.106.89> DocumentRoot /var/www/html/dev/novared_soporte/branches/v0.3/soporte ServerName 10.100.106.89 Alias /phpmyadmin /var/www/html/phpmyadmin #you need to explicitly allow access, since your alias is outside of your document root <Directory /var/www/html/phpmyadmin> Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost 10.100.106.90> ServerName 10.100.106.90 DocumentRoot /var/www/html </VirtualHost>
这将只允许通过10.100.106.89 / phpmyadmin访问,没有其他的虚拟主机。
这可能是一个解决scheme,最好只使用Include指令来包含phpmyadmin附带的apache
当您将IP地址定义为NameVirtualHost时,Apache服务器希望浏览器通过与该主机相关的域名,以确定要提供哪个文档根目录。
一个例子是这样的:
NameVirtualHost 10.100.106.89 <VirtualHost 10.100.106.89> DocumentRoot /var/www/html/dev/novared_soporte/branches/v0.3/soporte ServerName mydomain.com ServerAlias www.mydomain.com </VirtualHost> <VirtualHost 10.100.106.89> DocumentRoot /var/www/html/phpmyadmin ServerName phpmyadmin.mydomain.com </VirtualHost> <VirtualHost 10.100.106.90> ServerName 10.100.106.90 DocumentRoot /var/www/html </VirtualHost>
您的apache将在用户访问mydomain.com或www.mydomain.com时提供第一个文档根目录,并在访问phpmyadmin.mydomain.com时提供第二个phpmyadmin根目录。 这3条logging都指向相同的IP地址。 对于没有匹配ServerName或ServerAlias的任何匹配相同IP地址的stream量,它将默认为第一个VirtualHost。