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

使用自定义固定链接时WordPress纯数字标题文章返回404错误

WordPress纯数字标题文章404问题的原因及解决办法

核心原因

  • WordPress路由解析逻辑冲突:WP默认支持通过文章ID直接访问(比如example.com/123),当固定链接结构设为/%category%/%postname%/时,纯数字的postname会被WP优先当成文章ID去匹配,如果系统里没有对应ID的文章,就会返回404,而非按postname查找文章。
  • 服务器重写规则拦截:部分服务器(如Nginx或Apache)的默认规则可能将纯数字路径识别为静态文件或其他资源请求,未将请求转发给WordPress处理,导致404。

解决办法

1. 修改WordPress内部路由判断

在主题的functions.php文件末尾添加以下代码,强制让纯数字的postname走文章标题匹配逻辑:

add_filter('request', function($query_vars) {
    if (isset($query_vars['name']) && is_numeric($query_vars['name'])) {
        $post_id = (int)$query_vars['name'];
        $post = get_post($post_id);
        // 若无对应ID的文章,按postname查询
        if (!$post) {
            $query_vars['postname'] = $query_vars['name'];
            unset($query_vars['name']);
        }
    }
    return $query_vars;
});

添加后进入WP后台→设置→固定链接,直接保存即可刷新规则。

2. 检查服务器重写规则

Apache环境

确保网站根目录的.htaccess文件包含正确的WP重写规则:

<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模块。

Nginx环境

在站点的Nginx配置文件中,确保location /块规则正确转发请求到WP的index.php:

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

修改后重启Nginx服务生效。

3. 调整固定链接结构

若不想修改代码或服务器配置,可给固定链接添加固定前缀,比如将结构改为/%category%/p-%postname%/,纯数字标题的文章链接会变为example.com/category/p-3333/,WP就不会把3333误判为文章ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:05:27