如何为基于IP的请求设置不同的documentroot,以及针对基于域的请求设置不同的

我的问题是,我有一个域名,让我们说example.com,我的服务器的IP地址是例如192.168.0.1。

我想设置2个不同的虚拟主机,所以当用户在他的浏览器中inputIP地址(192.168.0.1)时,他会看到来自这里的内容:/ var / www / staging

但是如果用户inputexample.com,他将从这里看到内容:/ var / www

我认为这是可能的,但我正在玩弄它,不能使它的工作。

我也不想做简单的redirect。 我知道我可以,但我需要在同一台服务器上以root身份工作的应用程序(live&staging)。 我不能购买第二个域名,而我不能关联新的IP地址。

这当然是可能的。

使用基于名称的虚拟主机,没有Host:标题或设置为IP地址的Host:标头的请求将转到默认虚拟主机。

Host: header设置为example.com请求将转到列出的第一个与ServerNameServerAlias指令中的名称匹配的虚拟主机。

您可以使用apache2ctl -S来查看您当前已经configuration了哪些虚拟主机,以及哪一个是默认主机。

如果您只是使用基于名称的虚拟主机,这将是非常容易的。 configuration您的DNS与A指向example.com和staging.example.comlogging到机器的IP地址,然后有两个适当configuration的虚拟主机等待响应

 Listen 80 NameVirtualHost *:80 <VirtualHost *:80> ServerName example.com DocumentRoot /var/www/example.com ... </VirtualHost> <VirtualHost *:80> ServerName staging.example.com DocumentRoot /var/www/staging.example.com ... </VirtualHost>