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

WordPress 4.9.5(Divi主题)未返回404却返回相似页面问题求助

为什么访问不存在的URL没有返回404,反而跳转到相似页面?

结合你使用的WordPress 4.9.5版本、Divi主题,以及「文章名称」模式的固定链接,出现这种情况主要有以下几个常见原因,对应的排查和解决方法如下:

1. WordPress核心的redirect_canonical函数自动重定向

WordPress自带的redirect_canonical函数会尝试“修正”URL——比如自动补全斜杠、纠正拼写错误,甚至将部分匹配的URL重定向到最接近的现有页面。当你访问/renew/时,它可能把这个路径识别为现有页面/renewable-energy-partnership/的前缀,触发了自动重定向逻辑。

解决方法:

  • 如果你想完全禁用这个功能,可以在主题的functions.php文件末尾添加以下代码:
remove_action('template_redirect', 'redirect_canonical');
  • 注意:禁用这个函数可能影响其他正常的URL修正行为(比如重复内容的canonical处理),建议先测试,确认无副作用后再保留。

2. Divi主题的自定义查询或重定向逻辑

Divi主题本身可能内置了一些URL处理逻辑,或者你在主题设置中开启了“智能匹配”类功能。另外,如果你使用过Divi的自定义模板、全局模块,或在子主题functions.php中添加过自定义查询代码,也可能修改了默认查询规则,导致部分匹配的URL返回现有页面而非404。

解决方法:

  • 先切换到WordPress默认主题(比如Twenty Seventeen),测试访问/renew/是否返回404。如果切换后正常,说明问题出在Divi主题上。
  • 进入Divi > Theme Options,检查是否有URL重定向、搜索匹配相关的设置(尤其是SEO或URL优化类选项),尝试关闭后再测试。
  • 若你在子主题中添加过自定义代码,排查是否有修改WP_Query或重写规则的内容,暂时注释掉这些代码再验证。

3. 固定链接重写规则冲突或.htaccess配置错误

当固定链接设置为「文章名称」模式时,WordPress会生成对应的重写规则写入.htaccess文件。如果.htaccess规则不正确,或与服务器其他重写规则冲突,可能导致URL解析异常,出现部分匹配的情况。

解决方法:

  • 登录WordPress后台,进入设置 > 固定链接,无需修改任何设置,直接点击「保存更改」,让WordPress重新生成正确的重写规则到.htaccess。
  • 检查.htaccess文件内容,确保WordPress的重写规则标准。「文章名称」模式的标准.htaccess内容如下:
# 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
  • 若服务器是Nginx,需检查Nginx配置文件中的重写规则,确保所有非静态文件请求都转发到index.php处理。

4. 第三方插件的干扰

比如SEO插件(Yoast SEO、All in One SEO Pack)、重定向插件(Redirection)或自定义URL插件,可能设置了模糊匹配的重定向规则,或修改了WordPress的查询逻辑,导致访问不存在的URL时跳转到相似页面。

解决方法:

  • 暂时禁用所有第三方插件,测试访问/renew/是否返回404。如果恢复正常,再逐个启用插件,定位出问题插件。
  • 检查重定向插件的规则列表,看是否存在包含/renew/的模糊匹配规则(比如正则表达式^/renew),删除这类规则即可。
  • 查看SEO插件设置,是否开启了“自动修复URL”或“相似页面重定向”功能,尝试关闭后测试。

5. 页面slug的部分匹配查询

WordPress查询系统默认是精确匹配slug,但如果有自定义代码修改了WP_Query参数(比如将name设为模糊匹配,或用s搜索参数处理URL),就可能导致输入部分slug时返回包含该字符串的页面。

解决方法:

  • 排查主题或插件中是否有修改WP_Query的代码,比如在pre_get_posts钩子中添加了$query->set('s', $requested_slug);这类代码——它会把URL路径当成搜索关键词,返回匹配页面。
  • 找到这类代码后,修改或删除它,确保查询是精确匹配slug而非模糊搜索。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:10:01