基本上,您需要两个专用IP地址,或者第三个vhost。
IP地址可以使用两个IP地址,并在apache配置中执行以下操作:
#IP address for WP
NameVirtualHost 12.34.56.78:80
#For everything else
NameVirtualHost *:80
然后,确保
VirtualHost
WordPress声明如下:
<VirtualHost 12.34.56.78:80>
以及所有其他
VirtualHost
WordPress之前声明的块使用另一个块:
<VirtualHost *:80>
这应该行得通。我根本没有测试过这个,所以它可能不起作用。另外,我不确定第二个字母中是否使用星号
NameVirtualHost
线路将正常工作;再次:未测试。
CNAME假设您的域映射插件允许这样做,请使用路由映射域的“CNAME”方法,而不是“IP”方法。使用类似“地图”的东西。领域com和have-mapped-domains指向一个cname(这将阻止他们使用其域的根,但他们应该能够301重定向example.com到www.example.com)
为“map”添加另一个VirtualHost条目。领域com”作为第一个vhost条目,镜像域的主vhost条目,特别是:文档根。
同样,这也是未经测试的。
子域配置(旧答案)
我将使用自己站点的虚拟主机文件作为示例。这是一个文件:
# Virtual host for the subdomain first
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName drupal.johnpbloch.com
# Note that the document root and all other paths are different from the domain\'s primary virtual host below.
DocumentRoot /path/to/subdomain/directory/htdocs/
ErrorLog /path/to/subdomain/directory/logs/error.log
CustomLog /path/to/subdomain/directory/logs/access.log combined
<Directory /path/to/subdomain/directory/htdocs/>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
# Virtual host for the main site next
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName johnpbloch.com
ServerAlias www.johnpbloch.com
ServerAlias *.johnpbloch.com
DocumentRoot /path/to/main/site/directory/htdocs/
ErrorLog /path/to/main/site/directory/logs/error.log
CustomLog /path/to/main/site/directory/logs/access.log combined
<Directory /path/to/main/site/directory/htdocs/>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
不必全部放在一个文件中;重要的是Apache首先加载更具体的虚拟主机。这意味着任何虚拟主机在任何
ServerAlias
必须在任何具有这些通配符值的虚拟主机之前加载值。
在WordPress内部或周围,没有任何价值、设置,也没有任何可能解决您问题的方法。当请求到达WordPress时,为时已晚。Apache已经加载了虚拟主机,已经解析了主机,并且将始终按照它的方式路由流量。如果流量到达WordPress时不应该这样,那就是服务器配置问题。不是WordPress。