Apache2配置多子域名站点失效问题求助
解决多WordPress站点的301重定向问题
看来你遇到的是Apache虚拟主机匹配优先级+WordPress自身配置导致的重定向问题,我帮你一步步排查解决:
1. 检查Apache虚拟主机的加载顺序与默认站点
Apache会按照/etc/apache2/sites-enabled/下的软链接文件名排序加载虚拟主机配置,第一个加载的虚拟主机会成为默认站点(当请求的域名没有匹配到任何ServerName时,比如example.com)。
- 先查看当前启用的站点排序:
sudo ls -la /etc/apache2/sites-enabled/ - 如果发现
000-default.conf还在启用状态,先禁用它避免干扰:sudo a2dissite 000-default.conf sudo systemctl restart apache2 - 只要
ServerName设置正确,Apache会精准匹配域名,除非配置有语法错误,这点我们下一步验证。
2. 验证Apache配置语法正确性
配置语法错误是很多重定向问题的隐形根源,先做检查:
sudo apache2ctl configtest
如果输出Syntax OK就没问题,否则根据提示修正配置文件后重启Apache。
3. 检查test2站点的WordPress站点URL设置
这是最可能导致test2重定向到test1的原因:复制WordPress站点到test2目录时,数据库里的站点URL还保留着test1的地址,WordPress会自动发起301重定向。
- 登录到test2的数据库,执行以下SQL查询(注意替换表前缀,如果你的前缀不是
wp_):SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home'); - 确保这两个值都是
http://test2.example.com(如果WordPress安装在根目录);如果是子目录/reeme安装,则应该是http://test2.example.com/reeme。 - 如果值不正确,执行更新语句:
UPDATE wp_options SET option_value = 'http://test2.example.com' WHERE option_name = 'siteurl'; UPDATE wp_options SET option_value = 'http://test2.example.com' WHERE option_name = 'home';
4. 修正test2站点的.htaccess配置
你提供的.htaccess里RewriteBase /reeme/和RewriteRule . /reeme/index.php [L]需要和实际安装路径匹配:
- 如果WordPress安装在test2的根目录(
/path/test2),正确的.htaccess应该是:<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> - 如果确实安装在
/reeme子目录,要确保站点URL已经正确指向该子目录,同时.htaccess配置要和站点URL对应。
5. 清除浏览器缓存后测试
301重定向会被浏览器强缓存,测试前一定要清除Chrome的缓存,或者用隐私模式打开test2.example.com,验证重定向是否消失。
内容的提问来源于stack exchange,提问作者tuanptit
相关产品推荐
相关产品推荐

