设置父页面slug为前缀的新子页面仅显示404错误
解决WordPress子页面设置父页面后404的问题
以下是针对你遇到的「设置父页面后子页面URL正确但跳404」问题的排查和解决步骤:
1. 确认父页面的基础状态
- 确保Services页面处于发布状态(不是草稿、私密或待审核),只有发布状态的页面才能作为父页面生成有效URL
- 检查Services页面的slug是否为
services,避免和其他内容(如自定义帖子类型、分类、标签)的slug重复
2. 强制刷新重写规则
WordPress的重写规则缓存可能未更新,即使手动保存固定链接也可能失效:
- 后台进入「设置」→「固定链接」,无需修改任何设置,直接点击「保存更改」,这会强制WordPress重新生成重写规则
- 如果上述操作无效,可临时在主题的
functions.php文件中添加以下代码,访问一次网站后删除(避免重复执行影响性能):flush_rewrite_rules();
3. 验证.htaccess文件(Apache服务器)
- 确保
.htaccess文件权限为644,让WordPress具备写入权限 - 检查文件内的WordPress规则是否完整,正确内容如下:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
4. Nginx服务器配置检查
如果使用Nginx,需确保站点配置中包含正确的重写规则,示例如下:
location / { try_files $uri $uri/ /index.php?$args; }
添加或修改后重启Nginx服务。
5. 排查插件冲突
- 临时禁用所有插件,测试子页面是否能正常访问。若恢复正常,逐个启用插件,定位导致冲突的插件(SEO插件、缓存插件、自定义 permalink 插件是高发对象)
- 禁用插件后记得再次刷新固定链接规则
6. 检查主题自定义规则
- 临时切换到WordPress默认主题(如Twenty Twenty-Four),测试子页面访问情况。若正常,说明当前主题的自定义重写规则存在冲突,需检查主题
functions.php中的add_rewrite_rule等相关代码
7. 避免slug重复冲突
确保没有其他页面、帖子、分类、自定义帖子类型的slug与services或子页面slug(如web-design)重复,重复的slug会导致URL路由混乱
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

