我正在设置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正在找不到页面。
我做错了什么?
答案 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>