实战指南 › Cloudflare Pages 站务:重复内容、跳转与部署提速
Cloudflare Pages 站务:重复内容、跳转与部署提速
Search Console 报「重复网页」,我第一反应是代码有问题。实测发现:同一个首页在三个地址上都返回 200,内容 md5 完全一致。代码完全正确,问题出在部署配置。
三个地址,同一份内容
$ curl -s -o /dev/null -w "%{http_code} → %{redirect_url}\n" https://fusi.si/
200 →
$ curl -s -o /dev/null -w "%{http_code} → %{redirect_url}\n" https://www.fusi.si/
200 → # ← 应该 301 到主域
$ curl -s https://fusi.si/ | md5sum
a5ab014c... # www 版本一字不差
三个入口分别是主域、www 自定义域、以及 Cloudflare 自动分配的 pages.dev 部署地址。只要都能 200 返回,Google 就会把它们判为重复内容。
好消息是页内 canonical 已经正确指向主域,所以 Google「选择的规范网页」其实是对的——它只是在你指定的规范之外又多发现了两个副本。
三种手段,各管一段
- canonical — 声明「这份内容以我为准」。代码侧能做,180 页全部已指向主域。
- 301 跳转 — 把 www 永久重定向到主域。这是最干净的做法,但必须在 Cloudflare 控制台配 Redirect Rule,代码做不到。
- robots屏蔽 — 用于 pages.dev 这种无法跳转的地址。只能阻止抓取,不能完全阻止权重传递,但配合 canonical 已足够。
关键陷阱:不要在 robots 里屏蔽 www。那样会把 301 跳转一起拦掉,www 就真的消失了。www 必须 Allow。
User-agent: *
Allow: /
Disallow: /fusi-si.pages.dev/ # 仅屏蔽无法跳转的部署地址
Sitemap: https://fusi.si/sitemap.xml
.html 后缀的 308
Pages 默认启用 pretty-URL:/tools/chatgpt.html 会 308 跳到 /tools/chatgpt。这本身没问题,前提是站内链接、canonical、sitemap 三者统一用短地址。
这个站的 Search Console 报了 34 个「网页会自动重定向」——正好是早期部署过的 .html 地址。站内 181 种链接实测零个 .html,说明全部来自站外与历史记录,只能等 Google 更新。
排查这类问题最快的办法是扫全站内链,而不是逐页看:
grep -ro 'href="[^"]*\.html[^"]*"' --include="*.html" . | wc -l
# 0 = 站内干净,剩下的就是站外来的
把部署从 7 分钟压到几秒
npx wrangler 每次调用都会重新下载包,实测两次都超过 5 分钟未完成。npx 其实已经把包装好了,只是每次重新校验。
# 直接调用 npx 缓存里已下载的二进制
WR="$LOCALAPPDATA/npm-cache/_npx/<hash>/node_modules/.bin/wrangler"
$WR pages deploy _deploy --project-name=fusi-si # 几秒完成
- 部署目录单独组装,只放静态产物,排除
.py/ 源快照 /__pycache__ - 凭据存到 gitignore 的文件里,不要每次问;日志写文件再读,别接管道(缓冲会让进程看起来卡死)
- 把「构建 + 自检 + 部署」串成一个脚本,自检不过就不部署
Advertisement
广告位(AdSense 接入后显示)