信科网络 · 11 年只做 WordPress | 建站 / 主题 / 插件 / 商城 / 迁移 / 托管 | 累计服务 3000+ 企业 | 源码全交付
服务热线:13280692153 邮箱:web@wordpressx.com
工作日 08:30-18:0013280692153 免费诊断
首页/WordPress 教程/WordPress 404 处理:页面模板、插件与伪静态失效
BLOG

WordPress 404 处理:页面模板、插件与伪静态失效

分类 发布 2026-10-07

404 有两种。一种是链接真的失效了,返回 404 是对的;另一种是页面明明在,访问却是 404,那就是配置问题。这两种要分开处理,混在一起查会绕远路。

判断方法很简单:后台「页面」或「文章」列表里能找到这篇内容,前台访问却 404,属于配置;后台也找不到,属于内容没了。前者查伪静态和固定链接,后者查 301 和 404 页面。

先确认 404 是谁返回的

看页面长相就知道。如果页面是自己主题的 404 模板,有导航、有搜索框,说明请求已经进了 WordPress,是 WP 自己判断 is_404;如果页面是 nginx 或 Apache 的默认错误页,白底黑字写着 Not Found,说明请求根本没到 PHP,rewrite 没生效。这两种往完全不同的方向查。

现象 常见原因 处理
所有内页 404,首页正常 伪静态规则没写,或写了但没生效 nginx 加 try_files;Apache 检查 .htaccess 与 AllowOverride
新发布的文章 404,老文章正常 固定链接规则未刷新,或缓存没清 进「设置 → 固定链接」直接点保存
改过 slug 之后 404 旧地址失效,没做 301 旧地址 301 到新地址
文章第二页 /page/2/ 404 文章总数不足两页,或分页参数被查询覆盖 核对每页篇数与 $wp_query->max_num_pages
分类页 /category/xxx/ 404 分类别名与页面 slug 撞车,或自定义文章类型的 rewrite 冲突 改掉其中一个 slug,再刷新固定链接

固定链接规则没生效

WordPress 的固定链接不是真实目录,全靠 rewrite 规则。规则存在数据库 wp_options 的 rewrite_rules 字段里,切换主题、迁移站点、换 web 服务器、换域名,都可能让它失效。最直接的修复是进「设置 → 固定链接」,什么都不改,直接点「保存更改」,WordPress 会重新生成一遍规则。

保存后还是 404,就看服务器层。nginx 需要这一段,放在 server 块里:

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

Apache 需要 .htaccess 里这段,同时虚拟主机的 AllowOverride 必须是 All,否则 .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>

再补一个判断:用 ?p=123 这种朴素链接访问同一篇文章。能打开说明 WordPress、数据库、主题都正常,问题 100% 在 rewrite;打不开说明是内容本身或权限问题,别再折腾伪静态。另外,如果站点放在子目录,RewriteBase 要跟着改,很多人从这里开始错。

还有一种容易被忽略的情况:服务器前面挂了 CDN 或反向代理,源站规则是对的,但 CDN 缓存了一条 404 响应,清缓存之前怎么改都是 404。这类问题看响应头里的缓存命中标记就能确认。

页面真被删了,和翻页 404

内容被删好办,后台回收站里找,30 天内都能还原。要注意的是「改 slug」等于删掉了旧地址,搜索引擎和外部链接都会打到 404。有外链的文章改完 slug 之后,一定补一条 301。

翻页 404 是老问题。WordPress 默认 /page/2/ 只在文章数超过「设置 → 阅读 → 博客页面至多显示」时才存在。每页 10 篇、只有 8 篇,访问 /page/2/ 就是 404,这是正确行为,不用修。另一种是模板里的自定义循环用了 offset 或者自己写了 posts_per_page,导致分页计算和实际查询对不上,第 2 页开始全 404。检查方法是在模板里打印两个值:

echo $wp_query->max_num_pages;
echo $wp_query->found_posts;

两个值不一致,说明查询被改过。用 pre_get_posts 调整主查询,不要用 query_posts,那会破坏全局分页状态,翻页 404 大半是它造成的。

分类页 404 多发生在两种场景:分类的 slug 和某个页面的 slug 完全相同,或者注册自定义文章类型时 rewrite 的 slug 和已有分类撞车。改掉其中一个,再刷新固定链接即可。整站 404 通常出现在迁移之后,多半是数据库里的旧域名没替换,或者新服务器的 rewrite 规则没同步,可以对照 迁移搬家 的检查清单过一遍。

还有两类容易被误判成「伪静态坏了」的 404。一是中文别名:WordPress 允许文章别名写中文,真实 URL 会被百分号编码,复制粘贴时被二次编码或者被聊天工具截断,访问就是 404,这类地址建议统一改成英文或拼音。二是大小写:Linux 服务器区分大小写,/About/ 和 /about/ 是两个地址,别名里带大写字母时,别人手打小写就 404,需要额外加一条忽略大小写的重定向规则。末尾斜杠也是同理,/about 和 /about/ 在部分服务器配置下只有一种能通,固定链接结构定好后不要中途改带不带斜杠。

404 页面模板怎么做

主题根目录的 404.php 就是 404 模板。没有的话 WordPress 会退回 index.php,页面看起来完全正常,很容易让人误判成「没配 404」。做一个合格的 404 页要满足三点:

  • 返回真正的 404 状态码,不要 301 跳首页。跳首页叫软 404,搜索引擎会认为这个地址长期有效,最后把一堆无效 URL 都算成首页的重复内容。
  • 给出搜索框、热门文章、分类入口,让人能继续往下走,而不是直接关掉。
  • 记录被访问的 URL,方便事后补重定向。
if ( is_404() ) {
    status_header( 404 );
    nocache_headers();
}

有些 SEO 插件会接管 404 页面,提供自定义内容、404 日志、自动重定向。装了插件就不要在主题里再写一套,两边同时输出会打架。选插件时优先看它会不会把 404 状态码改成 200,这一点比页面长什么样重要得多,软 404 对收录的伤害是长期的。相关判断标准可以对照 SEO 优化 里的收录一节。

用 404 日志找失效链接

404 页面好看是次要的,能从日志里捞出失效链接才是主要价值。三种拿数据的方式,按成本从低到高:

  1. 服务器日志:直接从 access.log 里筛状态码 404,按 URL 聚合排序,出现次数最多的就是最该修的。
  2. 插件记录:多数 SEO 插件的 404 监控会把 URL、来源、命中次数存表,后台能直接看,还能一键加重定向。
  3. 搜索引擎后台的页面索引报告,能看到外部链接打过来的 404,这类链接往往价值最高。
grep " 404 " access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
awk '{print $9, $7}' access.log | grep "^404" | head -50

拿到列表后分三类处理:内容还在但换了地址的,做 301;内容确实删了的,让它保持 404,不要硬跳首页;被垃圾外链乱打的,忽略即可。批量重定向用插件或 nginx map 都行,规则超过几十条建议放在服务器层,每条都过一次 PHP 不值得。

防复发

  • 改 slug、改分类结构之前,先导出旧 URL 列表,改完批量加 301。
  • 迁移、换域名、换服务器之后,第一件事刷新固定链接,第二件事抽查 20 个内页。
  • 把 404 命中数加进监控。一周内突然上涨,通常意味着某次改版打断了链接。
  • 固定链接结构定下来就别频繁改。/archives/%post_id% 和 /%postname%/ 之间来回切一次,所有外链都要重做。
  • 主题更新后确认 404.php 还在,有些主题更新会把这个模板改名,页面立刻退回 index.php。

固定链接的选型和规则细节看 固定链接设置;如果 404 是整站性的、连首页都打不开,那更可能是 网站打不开 那一类故障,白屏和 404 的处理路径不一样,不要混着查。

INDUSTRIAL BELT

扎根中国制造产业带
懂工厂,才懂出海

从胶东半岛到珠三角,从长三角到中原腹地,每一片产业集群都有自己的出口节奏与买家画像。信科网络长期扎根产业一线,把工厂的产品语言翻译成海外采购商听得懂的搜索语言,让每一分投入都对着真实的询盘去。

fuling

涪陵外贸网站建设

重庆市涪陵区,邑枕长、乌两江,素为乌江流域物资集散地,有渝东南门户之称,是闻名遐迩的中国“榨菜之乡”。全区幅员面积2946平方公里,辖1个经济技术开发区、1个私营经济示范区和44个乡镇、街…

beidaihe

北戴河外贸网站建设

北戴河海滨地处河北省秦皇岛市中心的西部。是秦皇岛的城市区之一!受海洋气候的影响,夏无酷暑,冬无严寒,常年保持一级大气质量,没有污染,没有噪音,城市森林覆盖率54%,人均绿地630平方米…

kaizhou

开州外贸建站

开州区隶属于重庆市,位于重庆市东北部,三峡库区小江支流回水末端,介于北纬30°49′30″-31°41′30″、东经107°55′48″-108°54′之间,西邻四川省开江县,北依大巴山接城口县和四川省宣汉县,东毗云…

haiyuan

海原外贸建站

位于中国宁夏回族自治区中南部。1991年底人口31.15万。回族为主,有汉、满、蒙古、东乡等民族。西汉属安定郡。清同治十三年(1874)设海城县。民国三年(1914)改海原县。地形复杂,多山地。年…

hengshui

衡水WordPress建站

衡水市位于河北省东南部,东与沧州市和山东省德州市毗邻,西与石家庄市接壤,南与邢台市相连,北与保定市交界;南北长125.5公里,东西宽98.13公里,全市辖8县2市1区,总面积5815.4平方公里。衡…

lulong

卢龙WordPress建站

卢龙县地处河北省东北部、隶属于秦皇岛市,总面积961平方公里,全县辖12个乡镇、548个行政村,总人口41.5万人,其中农业人口38万人。卢龙,历史悠久,人杰地灵。1988年,卢龙县被确定为全国对…

fucheng

阜城Shopify建站

阜城县是河北省衡水市下辖的一个县。面积698平方千米,人口32万。邮政编码053700。阜城县人文荟萃.历史上出现过不少的学者名流,北齐的刘昼,北周的熊安生,民国初期的京剧著名表演艺术家荀慧生,…

beibei

北碚Shopify建站

北碚区位于重庆市区西北郊的缙云山下,嘉陵江畔,幅员面积753平方公里,人口63万,是重庆的风景旅游区和智力型清洁工业基地。本世纪20年代末,由爱国实业家卢作孚先生开拓,抗战时期为陪都重庆…

rongcheng

容城外贸推广

河北省容城县,历史悠久,距今已有2000年的历史,全县总面积314平方公里,总人口25万人。地理位置得天独厚。位于河北省中部,京、津、保腹地,距首都北京和天津直辖市均为120公里,两个小时的…

zhongwei

中卫外贸推广

中卫地处黄河前套之首,位于宁夏回族自治区中西部、宁、甘、内蒙古三省区交界点上,辖中宁、海原两县和中卫城区,总面积16986.1平方公里,其中川区面积3681.1平方公里,占21.67%,山区面积1330…

fengdou

丰都Google SEO

丰都县位于重庆市版图中心,东经107°28′03″-108°12′37″,北纬29°33′18″-30°16′25″之间,呈西北—东南走向分布,南北长87km,东西宽54km,幅员面积2901km2。长江横穿县境47km,水上距离重庆主…

qianjiang

黔江Google SEO

重庆市黔江区位于重庆市的东南边缘,地处武陵山腹地,东临湖北省的咸丰县,西界彭水县,南连酉阳县,北接湖北利川市,是渝、鄂、湘、黔四省市的结合部,素有”渝鄂咽喉”之称。另外…

jizhou

冀州GEO优化

冀州市隶属河北省衡水市,地处华北平原腹地,北距首都300公里,西距省会石家庄110公里,辖区总面积918平方公里,东与枣强县(衡水)为邻,南与南宫市、新河县(邢台)接壤,西与宁晋县(邢台)…

qingtongxia

青铜峡GEO优化

青铜峡市位于黄河上游宁夏平原中部,地势平坦,牛首、峡口两山对峙,黄河穿峡而过,山光水色相映,宛如开然铜镜,“青铜峡”由此而得名。地处西北内陆,东部季风区与西部干旱区域的交汇地带,属…

tongnan

潼南谷歌SEM

潼南县位于重庆市西北部最前沿。是川渝握手区腹地东西南北交通自然便捷走向的交汇点及区域几何中心,是成渝经济区的腹地中心,是重庆西部凸入川中腹地最远、毗邻四川县市最多的对外开放最前沿…

xiushan

秀山谷歌SEM

秀山土家族苗族自治县,位于重庆市东南部,武陵山脉中段,四川盆地东南缘的外侧,为川东南重门户。与湖南省、湖北省、贵州省毗邻,326国道和319国道贯穿全县。距长沙604公里、武汉656里、贵阳5…

pengshui

彭水Facebook广告

彭水苗族土家族自治县位于重庆直辖市东南部,处武陵山区,居乌江下游。北接湖北省,南连贵州省。全县辖10镇29乡,共274个村、26个居委,1785个村民小组、184个居民小组。2001年底,全县有17.55…

shenzhou

深州Facebook广告

深州市旧称深州,上古为冀州大陆之域。春秋时为晋地。战国属赵。秦属钜鹿郡。汉为下博县。隋开皇十六年(公元五九六年),于安平置深州,以城西故深池得名。尔后迭经废置,州城屡迁。唐徙州治…

anxin

安新Yandex推广

安新县位于河北省中部,县境东与雄县、任丘相连;南与高阳接壤;西与清苑、徐水交界;北与容城毗邻。总面积738.6平方公里。县人民政府所在地安新镇是安新县政治、经济、文化和交通中心,北距…

jiangjin

江津Yandex推广

重庆市江津区,是一个历史文化悠久的城市,以地处长江要津而得名。江津位于重庆西南长江之滨,距渝中区公路里程50公里;铁路里程65公里;水路里程72公里。江津城区气候特征与重庆相近,但综合…

cangxian

沧县TikTok推广

沧县位于河北省东南部,冀中平原东部,北冀京津,东邻渤海,地理坐标在北纬38°5′至38°3′,东经116°27′至117°9′之间。县政府驻沧州市新华区,全县总面积1527平方公里,其中耕地面积129万亩,总…

为什么一定要选懂产业带的出海服务商?建材丝网的欧洲建筑商看资质与交期,工业橡塑的中东工程商问耐温与工况,毛皮服饰的俄罗斯分销商算的是季节与毛利。买家不同,决策逻辑就不同;信科网络把这些差异拆进网站结构、关键词地图和投放策略里,用他们习惯的方式出现在他们搜索的地方。