WordPress固定链接与Nginx规则配置
首页能打开、文章点进去却404,常见原因是WordPress固定链接设置与Web路由没有配合。本文以根目录安装的普通单站点为例;多站点、子目录安装、缓存规则复杂的站点不能直接套用。前置安装流程见WordPress完整部署教程。
先区分应用404和Nginx404
打开一篇已经发布的文章,记录它的文章ID和当前链接。比较/?p=文章ID能否访问、漂亮链接是否失败;不要把WordPress后台预览草稿链接当成公开文章地址。查看对应站点访问日志及错误日志,确认请求到了正确的站点。首页或静态图片也失败时,先回到根目录、权限和DNS检查。
修改前记录现有链接结构
在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适配规则,避免同时在面板和系统路径维护两份不同配置。
保存设置并验证四类地址
- 在固定链接页选择预期结构并保存;Nginx的实际规则仍要由服务器管理员配置,保存按钮不会自动修好所有Nginx。
- 在新的浏览器会话打开一篇已发布文章,确认HTTP状态正常、标题内容正确。
- 测试分类归档、分页及后台登录入口,确认没有被错误重写。
- 测试图片、CSS和JavaScript文件仍按静态文件正常返回;再访问一个确定不存在的路径,确认返回真实404。
仍然404时按顺序检查
| 结果 | 应检查 |
|---|---|
| /?p=ID可用,漂亮链接失败 | location /是否已加载到目标域名;是否被更高优先级location或缓存规则接管。 |
| 所有文章链接都指向旧域名 | WordPress地址与站点地址、缓存及页面内链接;不是单纯重写规则问题。 |
| 只有一个旧链接失败 | 文章是否更改别名或被删除,是否有准确的旧新URL映射。 |
| 开启CDN后仍旧结果 | 先核对源站,再按实际缓存策略更新CDN缓存,不反复重装WordPress。 |
回退时恢复原链接结构与原Nginx配置,检测后加载,再从无缓存请求检查。正式站点的旧URL应保留明确承接方案,不能以所有地址跳首页代替迁移。
配图演示WordPress 7.1.4中文界面的选项和保存位置;保存设置后,仍需在自己的站点验证文章与静态资源。