迁移到新服务器后首页能打开,点进任何文章都是 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,检查主题或插件是否注册了自定义固定链接,把设置里的固定链接保存一次会重新生成规则。这一步看似多余,实际能解决不少迁移后的规则残留问题。

作者 9823189

发表回复