WordPress多域名迁移至新主机后内部访问子页面404问题
看起来你的核心问题是首页能正常访问,但子页面返回404,这通常是站点URL配置不正确或者重写规则(.htaccess)路径不匹配导致的,结合你的目录结构和配置,我给你一步步的解决方案:
1. 修正WP_HOME和WP_SITEURL的配置
你的WordPress实际安装在/www/domains/my-domain.com/wordpressfolder目录,但你当前的WP配置指向的是上层目录,这会导致WP生成的子页面URL路径错误。
打开wp-config.php,把两个常量更新为:
define('WP_HOME', 'http://myinternaladdress.hosting.com/www/domains/my-domain.com/wordpressfolder'); define('WP_SITEURL', 'http://myinternaladdress.hosting.com/www/domains/my-domain.com/wordpressfolder');
如果你的测试地址启用了HTTPS,把http://换成https://
2. 更新WordPress目录下的.htaccess重写规则
当前WP目录下的.htaccess使用了RewriteBase /,这是根路径的配置,但你的WP不在根目录,必须调整路径匹配:
替换WP目录下的.htaccess内容为:
<IfModule mod_rewrite.c> RewriteEngine On # 匹配测试地址下的WP实际路径 RewriteBase /www/domains/my-domain.com/wordpressfolder/ RewriteRule ^index\.php$ - [L] # 静态文件/目录直接访问,否则转发到index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /www/domains/my-domain.com/wordpressfolder/index.php [L] </IfModule>
这里关键是把RewriteBase和最后一条RewriteRule的目标路径都改成WP在测试地址下的完整URL路径,确保服务器能正确找到WP的入口文件。
3. 刷新WordPress固定链接规则
即使你手动修改了.htaccess,WP后台的固定链接配置可能还缓存着旧的路径:
- 登录WP后台,进入设置 > 固定链接
- 随便选择一个不同的链接结构(比如“朴素”),点击“保存更改”
- 再切换回你原来使用的结构(比如“文章名”),再次保存
这一步会让WP自动生成适配当前站点URL的重写规则,确保子页面的URL能正确映射到对应的内容。
4. 排查www目录下的.htaccess干扰(可选)
你当前www目录下的.htaccess是用来处理多域名/子域名映射的,但你的测试地址myinternaladdress.hosting.com并不匹配规则里的域名条件(规则会尝试匹配domains/%2目录,而%2是测试地址的域名部分,这个目录不存在),所以理论上不会影响,但如果前面的步骤没解决问题,可以暂时重命名www/.htaccess(比如改成.htaccess.bak),然后测试子页面是否能访问,排除规则冲突的可能。
完成这些步骤后,你的子页面应该就能正常访问了。如果还是有问题,可以检查服务器是否启用了mod_rewrite模块,或者目录/文件的权限是否正确(确保WP目录和.htaccess文件有足够的读写权限)。
内容的提问来源于stack exchange,提问作者robertnovak

