虚拟主机Subsites apache 2.4

时间:2016-07-11 11:14:00

标签: wordpress apache

我正在设置2个wordpress网站。场景是在文件夹var / www / domain / us和var / www / domain / eu中有两个Wordpress安装。当您从domain.com访问该站点时,domain.com/us应该是默认选项 用户通过以下网址访问该网站:domain.com/us或domain.com/eu

现在虚拟主机的设置是:(我没有附加真正的域名,所以到目前为止它只有IP地址)

<VirtualHost *:80>
 ServerName [IP-address]
 ServerAlias [IP-address]
 DocumentRoot /var/www/domain/us
 ErrorLog /var/www/html/domain.com/logs/error.log
 CustomLog /var/www/html/domain.com/logs/access.log combined
</VirtualHost>


<VirtualHost *:80>
 ServerName [IP-address]/us
 DocumentRoot /var/www/domain/us
 ServerAlias [IP-address]
 ErrorLog /var/www/html/domain.com/logs/error.log
 CustomLog /var/www/html/domain.com/logs/access.log combined
</VirtualHost>

<VirtualHost *:80>
 ServerName [IP-address]/eu
 DocumentRoot /var/www/domain/eu
 ServerAlias [IP-address]
 ErrorLog /var/www/html/domain.com/logs/error.log
 CustomLog /var/www/html/domain.com/logs/access.log combined
</VirtualHost>

我可以使用主虚拟主机访问IP地址,但最后两个IP / us和IP / eu正在找不到页面。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

ServerName将路径解释为主机名的一部分。服务器名称可以包含请求方案,主机名和端口,但不包含路径。因此,只有第一个虚拟主机有效。

由于您使用的是Apache 2.4,因此可以使用条件指令来解决问题。在第一个虚拟主机中添加以下内容,然后删除另外两个:

<VirtualHost *:80>
 ServerName [IP-address]
 ServerAlias [IP-address]
 <If "%{REQUEST_URI} =~ m#^/eu.*$#">
   DocumentRoot /var/www/domain/eu
 </If>
 <Else>
   DocumentRoot /var/www/domain/us
 </Else>
 ErrorLog /var/www/html/domain.com/logs/error.log
 CustomLog /var/www/html/domain.com/logs/access.log combined
</VirtualHost>