我有一个服务器与虚拟主机conf看起来像这样:
NameVirtualHost *:80 # My Virtual Hosts: <VirtualHost *:80> ServerAdmin [email protected] ServerName domain DirectoryIndex index.php index.html DocumentRoot /var/www/domain/public # Custom log file locations LogLevel warn ErrorLog /var/www/domain/log/error_log CustomLog /var/www/domain/log/access_log combined <Directory "/var/www/dailysongfix/public"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
一个典型的虚拟主机的权利? 那么我也需要在服务器上开发一些其他的网站,这些网站还没有挂钩到他们的域名。 我怎样才能查看他们没有一个域指向他们? 我猜测可能是IP地址和端口,但不知道如何设置。
如果你打算使用命名的虚拟主机,你需要给服务器分配一些名字。 在您的示例中,主机将通过名称domain (来自ServerName domain指令)进行寻址。 你可以尝试通过IP地址直接联系你的服务器,像http://123.45.67.89/但不会导致Apache触发指定的虚拟主机。 要做到这一点,你需要添加这样的东西到客户端上的/etc/hosts文件:
123.45.67.89域
那么,你应该可以在浏览器中使用http://domain/ 。 这可以在本地build立名称和IP地址之间的映射,而不必与DNS混淆。
这种方式的工作原理是当浏览器向服务器发送HTTP请求时,它在Host:标头中的URL中包含所使用的任何文本。 Apache将此文本放在Host:头中,并将其与每个指定的虚拟主机中的ServerName值进行匹配。 当它find一个匹配时,它将使用它作为服务器来处理请求的其余部分。 Apache不需要查找主机名和IP地址之间的映射关系,这就是为什么在只更改客户端机器configuration的情况下可以工作。
使用“别名”而不是VirtualHost,如果你的PHP应用程序不需要一个固定的URL,它应该工作得很好。
编辑:您可以将别名添加到上面粘贴的configuration,只需将它们添加到容器之前。
也许不是最好的方式去,但你总是可以做到如下:
我知道我知道 – 这不是你要求的,但我认为可以解决你的问题。
另外如果你的虚拟主机有完全相同的configuration,只需把你的网页放在/ somewhere / {nameOfDomain}然后在另一个虚拟主机上共享/某处。 那么您可以通过转到http:// myVhost / {nameOfDomain}来访问任何分页。 这可能会导致一些安全风险,如果在虚拟主机中你有一些访问规则[这可能不包括在'另一个虚拟主机'configuration]。
在任何标准打包的Apache将被设置为通过IP地址使用。 这基本上没有一个虚拟主机