4.2 KiB
4.2 KiB
页面索引策略
调整日期:2026-10-22。规则由 src/lib/seo.ts 统一生成,服务端初始 HTML 与客户端更新共用。这里只控制允许索引的信号,不保证搜索引擎实际收录。
允许索引
- 首页、有效且非空的短剧列表、三个榜单、专题列表与详情、标签列表、作品详情。
- 普通内容列表的有效分页继续自引用 canonical,不统一归并到第一页。
- 关于我们、常见问题、用户协议、隐私政策、2257、DMCA。
/config/{id}/必须有栏目自己的标题、正文简介和有效内容卡片。只有 SEO 标题/描述或空卡片不能满足条件;此规则不依赖额外接口请求,也不代表已自动判定其内容与全站其他栏目语义唯一。/play/{id}/{chapterId}/必须有作品名、真实正整数集数,以及当前访问身份有权观看的有效正片地址。共享预告、继承的作品简介、章节 SEO 字段不能单独使纯解锁/不可播放页开放索引。收费类型本身不作为排除条件,有权观看的金币/VIP 章节仍可索引。当前模板没有独立可见的章节正文,若以后增加此类内容,可再评估受限章节的索引范围。
不允许索引
| 范围 | 设置 |
|---|---|
| 内部搜索、导航入口、回家的路、福利应用 | noindex,follow |
| 个人中心、收藏、历史、已购、设置、充值/VIP、反馈 | noindex,nofollow |
| 非默认有效排序变体、非默认评论排序 | noindex,follow,沿用原有例外规则 |
| 详情和播放页的评论分页,页码大于 1 | noindex,follow |
接口成功确认 totalCount=0 的公开列表第一页 |
noindex,follow,继续返回 200 |
| 缺少独立栏目信息的更多列表、纯解锁或无有效正片的播放页 | noindex,follow,继续提供原页面 |
noindex 页面不输出 canonical、head 中的 prev/next 或内容 JSON-LD;正文的选集、评论、分页链接继续提供。作品详情没有评论时仍可索引,评论数为 0 不等于作品为空。
去重和结构化数据
- 2026-10-26 按新 Swagger 区分题材与专题:
/theme/{id或slug}/查询题材下短剧,/topics/{id或slug}/查询专题详情,各自保留自己的 canonical;题材更新状态筛选页使用 noindex。 - 自动生成的专题卡片与 ItemList 链接使用
/topics/{id}/;后台明确配置的moreUrl保留原值。 - 数字资源 ID 的前导零在 canonical 与播放实体 URL 中归一;普通分页仍保留自己的页码。搜索关键词不进行数字归一。
- canonical 仍仅取配置的永久域名,去除跟踪参数;
/rank/、/page/1/继续使用既有主地址。 - 2026-10-22 起内容主地址优先使用接口的非空 slug,缺少时使用 ID。ID 地址仍直接提供内容,其 canonical 与结构化数据指向该内容的 slug 主地址;评论与操作请求继续使用真实数字 ID。
- 可索引的付费播放页标记
isAccessibleForFree:false与hasPart.cssSelector:.play-paywalled-content,选择器对应真实播放器容器,不改变样式。 - VideoObject 只在真实媒体源、有效日期与封面均存在时输出。无权观看的媒体地址不进入 SEO 数据;不编造视频日期或媒体源。
状态码与验证
资源缺失和已证明越界的分页继续返回 404;主内容临时故障继续返回 500。noindex 不用来替代错误状态码。本次未修改 sitemap、robots.txt 或接口访问权限。
npm run build 及全部 274 项 npm test 通过。验证覆盖函数级索引矩阵、客户端 head 清理、真实 Next.js 生产服务的初始 HTML、Googlebot/YandexBot 请求、普通分页、评论分页、空列表、别名与前导零、更多栏目、付费章节权限和 JSON-LD。模拟接口不提交真实业务写入;线上响应头和实际收录结果仍以部署后的验证为准。