把 Cloudflare Pages 网站从 *.pages.dev 迁到自定义域名、又不丢 Google 收录,关键是:让每个旧网址都用永久 301 跳到新域名的同一路径,但旧主机上的 Search Console 验证文件要保持可访问;同时把 canonical、hreflang 和 sitemap 全部指向新域名,用同一个 Google 账号验证新旧两个资源,再从旧资源提交「地址更改」(Change of Address)。跳转至少保留一年。
Cloudflare 官方指南只讲了跳转规则,没讲决定排名能否跟着走的 Search Console 步骤。本文把两部分合成一份清单。Boloop 于 2026 年 11 月 8 日从 boloop.pages.dev 迁到 getboloop.com,下文的观察来自从外部检查这次迁移;排名结果现在还看不出来,所以本文不作任何结果承诺。
适合谁看
- 网站跑在 Cloudflare Pages 上,Google 已经收录了一些
*.pages.dev网址。 - 你已经或准备绑定自定义域名,希望这些网址和信号转到新域名。
- 如果
pages.dev从未被收录,用不着这么多步骤:301 或noindex就够了,Search Console 步骤可选。
pages.dev 应该用哪种跳转?
用服务端永久跳转(301 或 308),并保留路径和查询参数。Cloudflare 文档给的方法是 Bulk Redirects:建一个列表项,源为 <project>.pages.dev,目标 https://example.com,状态 301,勾选 Preserve query string、Subpath matching、Preserve path suffix;再建一条使用该列表的 Bulk Redirect 规则。
两个常见坑:
- `_redirects` 做不到。 Cloudflare 的 redirects 文档写明
_redirects不支持域名级跳转,而且不作用于 Pages Functions 生成的响应。实际也有人反映https://project.pages.dev/* https://project.com/:splat 301这一行"从来不生效"。如果你测试时好像成功了,先确认主机名真的变了。 - 「Include subdomains」会连预览一起跳。 预览部署位于
pages.dev主机的子域名下,勾上这个选项后它们也会跳到正式站。预览部署默认已带X-Robots-Tag: noindex,如果还要用预览,可以不勾。
Worker 或高级模式 _worker.js 也能做跳转。Google 只看 HTTP 响应,所以只要每个网址都 301/308 到对应网址,用哪种方式都可以。Boloop 的账号里没有针对 pages.dev 的 Bulk Redirect 列表,但每个页面都 301 到新域名的同一路径,可以推断是网站自己的代码在处理。无论用哪种方式,都要按 Google 看到的样子测一遍(见下文命令)。
哪些东西不能跳?
旧主机上的 Search Console HTML 验证文件必须保持返回 200。Google 的验证帮助文档写明:Search Console 查找这个文件时不跟随跳转,也不会跟随跳到其他域名的跳转。Search Console 还会定期重新检查验证。所以一刀切的全站跳转可能悄悄让旧资源失去验证,而提交地址更改恰恰需要这个旧资源。
做法(由简到繁):
- 把验证文件路径(例如
/google<token>.html)排除在跳转之外,让它在两个主机上都返回 200。Boloop 就是这样做的。 - 或者再加一种迁移后仍然有效的验证方式。Google 建议整站跳到别处时改用 HTML 标签验证,因为标签类方法会跟随跳转,到用户最终落地的页面上找标签。确认新域名首页上有这个标签。
还要注意旧主机的 robots.txt:Google 只有在允许抓取时才能看到跳转,所以旧主机绝不能返回 Disallow: /。要么把 robots.txt 也跳走,要么保留一个宽松的文件。Boloop 在 pages.dev 上保留了一个返回 200、允许抓取、并写明新 sitemap 地址的 robots.txt。
新域名上哪些东西必须同时改?
所有写明网址的地方都要换成新主机。Google 的网站迁移指南要求:
- 每个新网址都有指向自身的
rel="canonical" - hreflang 备用链接使用新网址(所有语言版本加
x-default) - sitemap 的
<loc>全部是新主机,robots.txt里的Sitemap:行也指向它 - 站内链接使用新主机或相对路径
如果网站是按某个设置生成绝对网址的(Boloop 用的是 PUBLIC_ORIGIN 变量),还要把 JSON-LD 的 url/@id、RSS 链接和 llms.txt 加进清单。设置没改、网站没重新部署之前,它们都会带着旧主机名。
2026 年 11 月 9 日,也就是切换后一天,Boloop 文章页的 canonical、4 个 hreflang 链接和 JSON-LD 都已在 getboloop.com 上,sitemap 里 228 个网址全部是新主机且都返回 200。
怎样按 Google 的视角测试迁移?
请求旧网址时不要跟随跳转,看状态码和 Location 头;再检查 sitemap 里的每个新网址都返回 200。
OLD=https://project.pages.dev
NEW=https://example.com
# 1. 深层链接和带参数的链接:保留路径与参数,且是永久状态码
curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" "$OLD/blog/some-post"
curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" "$OLD/blog/some-post?ref=x"
# 2. 验证文件在旧主机上返回 200(不跳转)
curl -s -o /dev/null -w "%{http_code}\n" "$OLD/google<token>.html"
# 3. 旧主机的 robots.txt 没有禁止抓取
curl -s "$OLD/robots.txt"
# 4. 新主机 sitemap 中的网址都在新主机上,且返回 200
curl -s "$NEW/sitemap.xml" | grep -oE '<loc>[^<]+' | sed 's/<loc>//' \
| xargs -P 8 -n1 curl -s -o /dev/null -w "%{http_code}\n" | sort | uniq -c
# 5. 页面的 canonical 指向新主机上的自己
curl -s "$NEW/blog/some-post" | grep -oE '<link[^>]*rel="canonical"[^>]*>'查询参数要仔细看。Boloop 检查时,首页带跟踪参数的网址是 301,但带 ?page= 或筛选参数的列表页返回 307,也就是临时跳转。Google 的跳转文档说,只有永久跳转才算强 canonical 信号。本来就不想被收录的网址这样无妨,但凡是需要承接排名的网址,都应该是 301 或 308。
pages.dev 网站怎么用「地址更改」?
在旧的 https://<project>.pages.dev/ 资源里打开「地址更改」工具,选择新域名的资源。Google 帮助文档的要求:
- 你必须是两个资源的已验证所有者,并且用同一个 Google 账号。
- 工具只用于域名级、不带路径的资源。
pages.dev的 DNS 不归你管,没法验证网域资源,所以旧站是网址前缀资源https://<project>.pages.dev/。它不带路径,算域名级。 - 工具接受迁移前会检查几个页面是否返回 301。
- 迁移提示持续 180 天,Google 要求至少在这段时间内保留跳转。
新域名可以建一个用 DNS TXT 记录验证的网域资源,它覆盖所有子域名和协议,在那里提交新的 sitemap。Google 说新 sitemap 提交后可以移除旧 sitemap;如果保留,旧 sitemap 里出现「网址会跳转」的警告属于正常现象。
能不能干脆关掉、屏蔽或 noindex pages.dev?
只要旧网址被收录过,就不要。论坛里常有人建议把 pages.dev 域名关掉,或放到 Cloudflare Access 后面。这两种做法都会去掉 Google 需要跟随的跳转,也不会把任何信号传给新域名。用 robots.txt 屏蔽也是同样的问题:Google 抓不到跳转。noindex 头(通过 _headers 加 X-Robots-Tag)会让旧页面从结果里消失,但不会告诉 Google 页面去了哪里。
noindex 只适合从未被收录、又想保持可访问的 pages.dev 副本,或者预览部署。Google 已经收录的内容,一律用跳转。
要多久?哪些现象是正常的?
Google 指南说,中等规模的网站可能要几周或更久,Google 才会基本改为显示新网址。每个旧网址都要被重新抓取一次,迁移才算完成。在此期间:
- 搜索结果里可能还会出现旧的
pages.dev网址。Google 说这是正常的:永久跳转后,旧网址可能作为备用名称保留一段时间。 - Google 重新抓取期间,排名可能上下波动。
- 旧资源的报表数据下降,新资源的上升,两边都要看。
跳转至少保留一年。这是 Google 给的一般最低期限,能的话最好一直保留。
Bing 和 IndexNow 怎么办?
Bing 依靠跳转来处理迁移。2025 年微软社区的回复说,Bing Webmaster Tools 的 Site Move 工具已不再提供,所以在 Bing Webmaster Tools 里验证新域名并提交它的 sitemap 即可。
IndexNow 需要新主机上有密钥文件,而且第一次提交可能被拒。Boloop 在 2026 年 11 月 9 日提交新域名的 sitemap 网址时,IndexNow 返回 HTTP 403 SiteVerificationNotCompleted,尽管密钥文件已经上线且内容一致;约五分钟后重试返回 200。遇到这个错误先等一会儿再试,不要急着认定密钥坏了。
简明清单
- 在 Pages 项目里添加自定义域名,等它显示为 Active。
- 修改网站的基础网址设置并重新部署,确认 canonical、hreflang、sitemap、
robots.txt的 Sitemap 行、JSON-LD 和订阅源都写的是新主机。 - 用拥有旧资源的同一个 Google 账号,在 Search Console 验证新域名。
- 从
<project>.pages.dev/*301 到新域名的同一路径,保留查询参数;排除验证文件,不要屏蔽旧的robots.txt。 - 用上面的 curl 命令测试:深层链接、查询参数、验证文件、所有 sitemap 网址。
- 从旧的网址前缀资源提交「地址更改」,并提交新 sitemap。
- 在 Search Console 为几个关键新网址请求编入索引;新主机通过验证后,再提交给 IndexNow。
- 跳转至少保留一年,之后几周两个资源都要观察。
常见问题
301 会损失 PageRank 吗? 不会。Google 的网站迁移指南写明,301 和其他永久跳转不会造成 PageRank 损失。
只靠指向新域名的 canonical 行不行? 有帮助,但 Google 只把 canonical 当作提示。永久跳转是更强的信号,「地址更改」工具也要求跳转已经到位。
只在 www 和非 www 之间切换,需要「地址更改」吗? 不需要。Google 说这个工具不用于同一域名的 www/非 www 切换、http 到 https,或站内路径变化。
Google 会一直显示我的 pages.dev 链接吗? 可能会持续一段时间。跳转后旧网址可能作为备用名称出现,随着重新抓取和外部链接更新会逐渐消失。所以把你能控制的链接(比如 X 主页、目录站登记)都改成新域名。
来源
- Cloudflare 文档《Redirecting *.pages.dev to a Custom Domain》:https://developers.cloudflare.com/pages/how-to/redirect-to-custom-domain/
- Cloudflare 文档《Redirects》(
_redirects功能支持表与 Functions 说明):https://developers.cloudflare.com/pages/configuration/redirects/ - Google 搜索中心《网站迁移》:https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes
- Google 搜索中心《重定向和 Google 搜索》:https://developers.google.com/search/docs/crawling-indexing/301-redirects
- Search Console 帮助《地址更改工具》:https://support.google.com/webmasters/answer/9370220
- Search Console 帮助《验证网站所有权》:https://support.google.com/webmasters/answer/9008080
- Septune《Cloudflare Pages SEO: robots.txt, the www redirect and the pages.dev copy》(预览默认 noindex、Include subdomains):https://www.septune.dev/hosting/cloudflare-pages
- Microsoft Tech Community《Site Move Tool – Bing Webmaster Tools – link does not work》:https://techcommunity.microsoft.com/discussions/bing/site-move-tool---bing-webmaster-tools---link-does-not-work/4203220
Boloop 相关文章:验证文件就在网站上,Google 为什么验证失败? · Sitemap 能打开,Search Console 为什么仍显示无法读取?