rel="prev"和rel="next"是搜索引擎识别分页序列的硬性依赖,必须用<a>标签的rel属性动态输出,第一页仅rel="next",中间页二者兼有,末页仅rel="prev",禁用disabled而改用aria-current="page"。

分页链接加 rel="prev" 和 rel="next" 不是“锦上添花”,而是搜索引擎识别页面序列关系的硬性依赖。没它,第二页大概率不被收录,或被当成孤立页面处理。
怎么给分页链接加 rel="prev"/rel="next"
必须用 <a> 标签的 rel 属性,不能用 <link> 标签塞在 <head> 里——后者只对当前页生效,而分页导航需要用户可点击的语义化链接本身携带关系。
- 第一页的“下一页”链接写:
<a href="/page/2" rel="next">下一页</a> - 中间页(如第3页)要同时有:
<a href="/page/2" rel="prev">上一页</a>和<a href="/page/4" rel="next">下一页</a> - 最后一页只保留
rel="prev",绝不能出现rel="next" - 纯图标按钮(如
<a href="/page/2">›</a>)必须配文字或aria-label,否则键盘用户和屏幕阅读器无法理解上下文
为什么不能只靠 URL 规则猜顺序
Google 明确说过:仅靠 /page/1、/page/2 这类路径命名,不足以让爬虫可靠推断分页逻辑。它会优先信任 rel 属性声明的关系。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 如果第5页的链接错误地写了
rel="next" href="/page/6",但实际没有第6页,Google 可能判定整个分页链断裂,从而降权甚至丢弃部分页面索引 -
rel="prev"和rel="next"必须成对闭环:第1页无rel="prev",最后一页无rel="next",中间页二者都要有 - 框架生成的分页组件(如 Laravel 的
$posts->links())默认不带这些属性,需手动重写模板或注入属性
常见踩坑点:disabled、aria-current 和 rel 的混用
disabled 对 <a> 标签完全无效——浏览器忽略它,链接仍可聚焦、仍被屏幕阅读器读出,且 SEO 依然抓取。这是最常被误用的写法。
立即学习“前端免费学习笔记(深入)”;
- 当前页码链接应使用
aria-current="page",例如:<a href="/page/3" aria-current="page">3</a>,视觉样式靠 CSS 控制,语义由aria-current表达 -
rel="prev"/rel="next"是页面间关系,aria-current="page"是当前页定位,二者职责不同,不可互相替代 - 不要给当前页链接加
rel="prev"或rel="next"—— 它既不是上一页也不是下一页,只是“自己”
真正容易被忽略的是:这些属性必须随服务端渲染动态输出,不能靠 JS 后补。爬虫不执行 JS,只解析初始 HTML。哪怕你用 Vue 或 React 渲染分页,也要确保 SSR 或静态生成时已写入正确的 rel 值。


















