分页页面的规范化链接不正确

前端开发 2026-07-10

WordPress会自动添加规范化链接。我注意到,对于分页页面,链接并不正确。例如,URL为:

https://example.xy/page/2

在头部区域显示的规范化链接为:

<link rel="canonical" href="https://example.xy/2/">

href忽略了 page/,显然与URL不匹配。

期望的链接:

<link rel="canonical" href="https://example.xy/page/2">

这是为什么?

作为临时解决方法,我禁用了规范化链接:

remove_action( 'wp_head', 'rel_canonical');

对于涉及的页面,我在 header-archivpage.php 手动添加了规范化链接:

<link rel="canonical" href="<?php echo get_site_url(); ?>">

这似乎为该页面的特定问题提供了解决方案。但我仍然想知道,为什么WordPress会省略 page/?你是否掌握关于分页页面的规范化链接的相关信息?

解决方案

这是因为WordPress依赖其重写规则和主查询来构建规范化的URL,如果有自定义查询、永久链接损坏,或者像Yoast SEO或 Rank Math这样的SEO插件干扰,可能会错误地输出 /2/ 而不是 /page/2/

你当前将首页设为规范链接的做法对SEO并不正确,因为分页页面应该有自己独立的规范链接。一个正确的修复方式是在分页页面上动态覆盖规范链接,像这样:

remove_action('wp_head', 'rel_canonical');

add_action('wp_head', function () {
    if (is_paged()) {
        global $wp;
        $current_url = home_url(add_query_arg([], $wp->request));
        echo '<link rel="canonical" href="' . esc_url($current_url) . '" />';
    }
});

或者使用过滤器(filter)实现更简洁的做法:

add_filter('get_canonical_url', function ($canonical) {
    if (is_paged()) {
        global $wp;
        return home_url(add_query_arg([], $wp->request));
    }
    return $canonical;
});

此外,请务必进入 设置 → 固定链接 并点击保存,以刷新重写规则,因为有时WordPress只是需要那一刻的“刷新按钮”时刻 😄。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章