WordPress 固定链接 404:Nginx 与 Apache 规则写法
摘要
先说结论:WordPress 固定链接 404 基本不是 WordPress 的问题,而是服务器没把「不存在的路径」交给 index.php 处理。你要做的只有一件事:让服务器把请求转发给 WordPress 入口。下面分别给 Nginx
先说结论:WordPress 固定链接 404 基本不是 WordPress 的问题,而是服务器没把「不存在的路径」交给 index.php 处理。你要做的只有一件事:让服务器把请求转发给 WordPress 入口。下面分别给 Nginx 和 Apache 的规则,附判断方法和常见坑。
一、先确认是不是这个原因(1 分钟)
- 首页能开,但文章页、分类页 404 → 典型伪静态未生效。
- 把固定链接改成「朴素」(带
?p=123)后能打开 → 确认是重写规则问题。 - 后台「设置 → 固定链接」显示的是你想要的格式,但前台 404 → 同上。
如果改成「朴素」也打不开,那就不是伪静态问题,去看数据库或文件权限。
二、Nginx 规则(最常用)
在站点的 server { } 块里加:
location / {
try_files $uri $uri/ /index.php?$args;
}
如果站点是子目录(比如 /blog/),规则要相应调整:
location /blog/ {
try_files $uri $uri/ /blog/index.php?$args;
}
关键理解:try_files 依次尝试「原路径文件 → 原路径目录 → 交给 index.php」。缺了这一行,Nginx 找不到文件就直接 404,根本不会去问 WordPress。
PHP 处理段也别漏
有的配置里 PHP 被单独处理,要确认存在:
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-cgi.sock; # 或 127.0.0.1:9000
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
不同面板的 socket 路径不一样,照面板给的写,别照抄。
三、Apache 规则
WordPress 自带 .htaccess,正常情况下内容是这样:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
文件存在但不生效,检查两处:
mod_rewrite模块是否加载(a2enmod rewrite)。- 虚拟主机配置里目录的
AllowOverride是否为All,如果是None,.htaccess 会被完全忽略。
这一条是 Apache 用户最常踩的坑:文件明明在,规则就是不起作用。
四、其他常见成因(别只盯着规则)
| 现象 | 原因 | 处理 |
|---|---|---|
| 只有部分文章 404 | 文章别名冲突或含特殊字符 | 改别名,用英文/拼音 |
| 中文标题全部 404 | URL 编码或服务器未支持 | 固定链接改成 /%post_id%.html |
| 分类页 404 但文章页正常 | 分类基础名与页面别名冲突 | 改分类基础名,避免和页面重名 |
| 刚迁移完全部 404 | 数据库里 siteurl 还是旧域名 | 改 wp-config 或数据库 option 表 |
| 开了 CDN 后 404 | CDN 回源路径不对 | 检查回源 HOST 与路径规则 |
五、改完规则要做的事
- Nginx:
nginx -t测试语法,再systemctl reload nginx。 - Apache:
systemctl reload httpd或apachectl restart。 - 后台「设置 → 固定链接」直接点保存,触发规则重写。
- 清一次浏览器缓存或用无痕窗口测,避免看到旧的 404 缓存。
另外,如果站点用了缓存插件或 CDN,改规则后记得清一次缓存,否则你测到的还是旧结果,会误判「改了没用」。
六、推荐的固定链接格式
- 中文站推荐:
/%post_id%.html或/%category%/%post_id%.html(稳定,不怕标题变)。 - 英文站推荐:
/%postname%/(可读性好,利于分享)。 - 不建议中途改格式:老链接会全部失效,除非做好 301。
固定链接一旦定下来就别频繁折腾,这是站点 URL 结构的基础,改一次代价很大。
2026年10月22日 10:41
前后30天 · 点日期看归档
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日
11月20日
11月21日