搜索引擎报告分类第 2 页、第 3 页与第一页 Meta Title 重复,不要只在标题末尾机械加页码。先决定这些分页是否需要被索引:有独立商品发现价值的真实分页可保留;由排序、显示数量和筛选组合产生的大量参数页则应控制抓取和索引。

区分真实分页与参数组合

p=2 通常代表商品集合的第二页;product_list_orderproduct_list_dirproduct_list_limit 只是相同集合的展示方式。标题可以对真实分页增加“第 2 页”,但排序参数不应生成新的标题版本,否则会扩大重复页面数量。

可通过 layout 或 observer 在分类结果确定后读取当前页码。下面示例仅演示标题处理,实际类名和事件应按项目版本注册:

$page = (int)$this->request->getParam('p', 1);
if ($page > 1) {
    $title = $pageConfig->getTitle()->get();
    $pageConfig->getTitle()->set(
        $title . __(' - Page %1', $page)
    );
}

代码应放在自有模块,例如 Alwayly 的 SEO 模块中,不要直接修改主题或 Magento 核心文件。注意中文商店与英文商店的页码文案不同,必须使用翻译机制。

Canonical 策略要与索引目标一致

如果分页页希望被索引,canonical 通常应指向分页自身,避免所有页都指向第一页后让深层商品难以发现;如果业务选择 noindex 某类参数页,也要确保站内链接仍可抓取,不要同时用 robots.txt 阻止后又期待搜索引擎读取 noindex。不同站点商品规模和内链结构不同,没有一个可机械套用的规则。

Magento 的分类 canonical 配置主要处理分类与商品规范 URL,并不自动解决所有带参数页面。第三方筛选模块生成的友好 URL 还需要单独定义哪些组合可索引、哪些组合 canonical 或 noindex。

缓存键必须包含页码与商店

如果第 2 页偶尔显示第一页标题,检查全页缓存和自定义 Block 的 cache key。页码、商店视图和货币等必要维度没有进入缓存键时,一个页面的 head 配置可能污染另一个页面。CDN 也要保留真正影响内容的查询参数。

上线前抓取第一页、第二页、排序页和一个筛选页,比较 Title、canonical、robots、HTTP 状态和商品列表。再检查站点地图只包含计划索引的规范分类 URL。目标不是让所有 URL 的标题都唯一,而是让可索引页面有明确价值,让无价值的参数组合不制造抓取负担。