WordPress固定链接与Nginx规则配置

首页能打开、文章点进去却404,常见原因是WordPress固定链接设置与Web路由没有配合。本文以根目录安装的普通单站点为例;多站点、子目录安装、缓存规则复杂的站点不能直接套用。前置安装流程见WordPress完整部署教程。

先区分应用404和Nginx404

打开一篇已经发布的文章,记录它的文章ID和当前链接。比较/?p=文章ID能否访问、漂亮链接是否失败;不要把WordPress后台预览草稿链接当成公开文章地址。查看对应站点访问日志及错误日志,确认请求到了正确的站点。首页或静态图片也失败时,先回到根目录、权限和DNS检查。

修改前记录现有链接结构

中文固定链接设置中的文章名选项和自定义结构规则
①当前选中的“文章名”结构;②自定义结构框中的/%postname%/规则。修改前先记录原有结构,示例域名前缀已遮挡。

在WordPress后台进入“设置→固定链接”,保存当前选项和自定义结构的截图。已有搜索收录或外部引用的正式网站,改变结构可能使旧URL失效,需要先设计旧链接到新链接的准确跳转,不因为新结构更短就直接切换。新测试站可选择“文章名”,自定义结构示例为/%postname%/,不要在结构框内填写完整域名。

为Nginx设置WordPress入口

编辑实际处理该站点HTTPS请求的server块,保留原PHP处理与安全规则,仅确认location /使用以下路由。不要把Nginx规则粘到.htaccess文件;Nginx不会按Apache方式读取它。

location / {
    try_files $uri $uri/ /index.php?$args;
}

这先尝试真实文件和目录,再把其他路径交给WordPress的index.php,并保留查询参数。不要使用“所有404都跳首页”的方式掩盖缺失页面,否则真实失效链接也可能被伪装成成功。站点位于/blog等子路径时,入口和目录结构不同,需要相应配置。

sudo nginx -t
sudo systemctl reload nginx

只有检测成功才reload。宝塔管理的站点应在该站点伪静态配置入口使用WordPress适配规则,避免同时在面板和系统路径维护两份不同配置。

保存设置并验证四类地址

中文固定链接设置下部的分类前缀、标签前缀及保存更改按钮
③完成修改后使用“保存更改”,再按正文核对实际访问结果。分类和标签前缀没有调整需求时保持原值。
  1. 在固定链接页选择预期结构并保存;Nginx的实际规则仍要由服务器管理员配置,保存按钮不会自动修好所有Nginx。
  2. 在新的浏览器会话打开一篇已发布文章,确认HTTP状态正常、标题内容正确。
  3. 测试分类归档、分页及后台登录入口,确认没有被错误重写。
  4. 测试图片、CSS和JavaScript文件仍按静态文件正常返回;再访问一个确定不存在的路径,确认返回真实404。

仍然404时按顺序检查

结果 应检查
/?p=ID可用,漂亮链接失败 location /是否已加载到目标域名;是否被更高优先级location或缓存规则接管。
所有文章链接都指向旧域名 WordPress地址与站点地址、缓存及页面内链接;不是单纯重写规则问题。
只有一个旧链接失败 文章是否更改别名或被删除,是否有准确的旧新URL映射。
开启CDN后仍旧结果 先核对源站,再按实际缓存策略更新CDN缓存,不反复重装WordPress。

回退时恢复原链接结构与原Nginx配置,检测后加载,再从无缓存请求检查。正式站点的旧URL应保留明确承接方案,不能以所有地址跳首页代替迁移。

配图演示WordPress 7.1.4中文界面的选项和保存位置;保存设置后,仍需在自己的站点验证文章与静态资源。