在单台机器上,我使用如下所示的适当设置设置了两个 WordPress 站点,在 Apache 站点中,我为每个域都设置了单独的配置:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www_domain1
<Directory /var/www_domain1/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ServerName domain1.com
ServerAlias www.domain1.com
ErrorLog /var/log/apache2/error_domain1.log
CustomLog /var/log/apache2/access_domain1.log combined
</VirtualHost>
以及目标文件夹中的 .htaccess
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
order deny,allow
<Files wp-config.php>
order allow,deny
deny from all
</Files>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
我有两个问题:
- www.domain1.com 始终重定向到 domain1.com
- foo.domain2.com 被重定向到 domain1.com (我认为 domain1 按字母顺序排在第一位,但这仍然不是我想要的)
答案1
重定向不是由设置服务器名称和别名引起的,而是更像“UseCanonicalName On”......它应该被设置为关闭。
第二个问题是,您应该将“NameVirtualHost *”添加到主配置文件中(取决于您运行的平台/发行版)。将 * 放入其中,而不是 IP 地址,因为您的虚拟主机定义中也有 *。
答案2
“重定向”是由将服务器名称设置为“domain1.com”并使用“www.domain1.com”别名引起的。这会导致 Apache 将所有对“www.domain1.com”的引用视为对“domain1.com”的引用。如果您不希望出现此行为,请不要创建别名。
听起来您可能在主 httpd.conf 文件中缺少“NameVirtualHost xxx.xxx.xxx.xxx”指令来告诉 Apache 使用基于名称的虚拟主机 - 这可以解释为什么两个虚拟主机的请求都被定向到配置的第一个虚拟主机。