You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress无法加载page.php,普通页面访问返回404.php问题排查

排查普通页面404但CPT正常加载的问题

这种情况我碰到过好几次,结合你描述的细节(CPT正常、固定链接已刷新、.htaccess验证正确),大概率是下面几个点出了问题,挨个排查应该能解决:

  • 自定义文章类型(CPT)的重写规则冲突
    注册CPT时的rewrite参数很容易踩坑,如果slug和普通页面的路径重合,或者没设置with_front参数,会直接干扰页面的路由解析。比如你要是把CPT的slug设成page,那肯定和默认页面系统冲突。
    检查你注册CPT的代码,确保rewrite配置合理:

    register_post_type('your_cpt_slug', array(
      // 其他必要参数(public、has_archive等)
      'rewrite' => array(
        'slug' => 'your-unique-cpt-slug', // 别和page、post这些默认路径重名
        'with_front' => true, // 让CPT继承固定链接的前缀,避免冲突
        'pages' => true
      ),
    ));
    

    修改后记得再去「设置→固定链接」页面重新保存一次,刷新重写规则。

  • Page模板文件的问题
    WordPress的模板层级有优先级,如果你的主题里存在page-{slug}.php或page-{id}.php但文件损坏/不存在,或者page.php本身有语法错误(比如PHP未闭合的标签、调用了不存在的函数),在WP_DEBUG关闭的情况下,可能直接返回404而不是报错。
    排查步骤:

    1. 确认page.php确实在主题根目录,文件名没拼写错误(全小写、没有多余符号)
    2. 临时把默认主题(比如Twenty Twenty-Four)的page.php替换到你的主题里,测试页面能否加载。如果能,说明你的page.php有代码问题,逐行排查循环、模板标签部分。
  • 主题/插件的重写规则干扰
    有些插件(比如自定义路由、SEO类插件)或者主题的functions.php里,可能用add_rewrite_rule添加了自定义规则,但没正确处理优先级,把普通页面的请求给拦截了。
    排查步骤:

    1. 先禁用所有插件,测试页面是否正常加载。如果恢复正常,再逐个启用插件,找到搞事情的那个。
    2. 切换到默认主题测试,如果页面正常,说明是你当前主题的代码问题,去functions.php里找和重写规则相关的代码排查。
  • 数据库中页面的状态或Slug冲突
    有时候后台看起来页面是已发布的,但数据库里的post_status可能不是publish,或者页面的slug和某个CPT条目的slug完全重复,导致路由匹配错误。
    排查步骤:

    1. 在后台编辑页面,检查「permalink」部分的slug是否和某个CPT条目重复
    2. 确认页面状态是「已发布」,点击「预览」看能否正常加载——如果预览正常但前端404,还是回到重写规则的问题上。
  • 服务器环境的隐藏问题
    你说.htaccess没问题,但如果服务器用的是Nginx而不是Apache,那.htaccess根本不起作用,得配置Nginx的rewrite规则。另外,.htaccess的权限不对(比如设成了777或者服务器用户没有读写权限)也会导致重写规则失效。
    解决办法:

    • 如果是Nginx,在站点配置文件里添加:
      location / {
          try_files $uri $uri/ /index.php?$args;
      }
      
      然后重启Nginx服务。
    • 检查.htaccess的权限,一般设为644,所属用户为服务器运行用户(比如www-data)。

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:23:02