迁移到新服务器后首页能打开,点进任何文章都是 404,后台也进不去。解析和数据库都正常,问题几乎都出在 Web 服务器没有把不存在物理文件的请求转给 index.php。
先分清 404 是谁返回的
查看 Nginx 错误日志:
tail -n 50 /var/log/nginx/error.log
日志里如果写着 open() “xxx” failed (2: No such file or directory),说明请求根本没到 PHP,是 Nginx 在直接找文件。如果日志没有记录、页面却是 WordPress 的 404 模板,那就是固定链接规则的问题。
补上 try_files 规则
在 server 块的 location / 里加一行,把找不到的路径交给 index.php:
location / {
try_files $uri $uri/ /index.php?$args;
}
改完先测试再重载,避免整站挂掉:
nginx -t && systemctl reload nginx
顺手核对站点地址
旧库里的站点地址还可能指向老域名,导致跳转和后台登录异常:
wp option get siteurl wp option update home "https://新域名" wp option update siteurl "https://新域名"
.htaccess 只对 Apache 生效,搬到 Nginx 后必须自己写伪静态,直接复制过去是无效的。两处都改完,内页和后台应该同时恢复。
如果后台能进、前台内页仍然 404,检查主题或插件是否注册了自定义固定链接,把设置里的固定链接保存一次会重新生成规则。这一步看似多余,实际能解决不少迁移后的规则残留问题。