WordPress迁移新主机后除首页外所有页面无法加载求助
解决WordPress迁移后子站点页面跳转至上层目录的问题
我帮你梳理几个最可能的原因和对应的解决步骤,亲测能解决这类迁移后的路由失效问题:
1. 先修正.htaccess的RewriteBase路径
你的站点放在.../public_html/directory_name/site/子目录里,默认生成的.htaccess大概率没设置正确的RewriteBase,导致路由规则指向了上层目录。
打开站点根目录(也就是site/文件夹)下的.htaccess文件,把开头的规则改成这样:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /directory_name/site/ # 这里必须和你的站点实际路径完全匹配 RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /directory_name/site/index.php [L] </IfModule> # END WordPress
改完保存,刷新页面试试能不能打开内页。
2. 强制更新固定链接规则
有时候哪怕.htaccess改对了,WordPress的固定链接缓存还没更新,得手动触发一下:
- 如果能登录那个正常的站点,或者你能通过其他方式进后台,直接去设置→固定链接页面,啥都不用改,点一下「保存更改」就行——这会让WP重新生成适配当前目录的路由规则,还会自动更新.htaccess(只要权限够)。
- 要是后台都进不去,就直接改数据库:打开phpMyAdmin找到对应站点的数据库,进
wp_options表,找option_name是permalink_structure的条目,把option_value改成你之前用的格式(比如/%postname%/),保存就行。
3. 确认wp-config里的站点URL是否正确
打开site/目录下的wp-config.php,看看有没有加这两行:
define('WP_HOME','https://你的域名/directory_name/site'); define('WP_SITEURL','https://你的域名/directory_name/site');
这两个地址必须和你实际访问站点的URL完全一致,包括http/https、域名和子目录。之前没加的话,加上之后保存再测试。
4. 检查上层目录的.htaccess会不会搞事情
上层的directory_name/目录如果有自己的.htaccess,可能会把所有请求都导向它自己的index.php,直接覆盖子站点的规则。打开这个文件看看有没有类似这样的规则:
RewriteRule ^(.*)$ index.php [L]
要是有,要么删掉这条规则,要么改成只针对上层目录的请求,比如:
RewriteCond %{REQUEST_URI} !^/directory_name/site/ RewriteRule ^(.*)$ index.php [L]
这样就不会干扰子站点的路由了。
5. 最后检查一下目录权限
确保site/目录和里面的文件权限是对的:
- 文件夹权限设为
755 - 文件权限设为
644 - .htaccess文件权限设为
644(保证WP能读写它)
权限不对的话,用FTP或者服务器面板改一下就行。
内容的提问来源于stack exchange,提问作者András Tóth
相关产品推荐
相关产品推荐

