把 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。遇到這個錯誤先等一會兒再試,不要急著認定金鑰壞了。

簡明清單

  1. 在 Pages 專案裡新增自訂網域,等它顯示為 Active。
  2. 修改網站的基礎網址設定並重新部署,確認 canonical、hreflang、sitemap、robots.txt 的 Sitemap 行、JSON-LD 和訂閱源都寫的是新主機。
  3. 用擁有舊資源的同一個 Google 帳號,在 Search Console 驗證新網域。
  4. 從 <project>.pages.dev/* 301 到新網域的同一路徑,保留查詢參數;排除驗證檔案,不要遮蔽舊的 robots.txt。
  5. 用上面的 curl 命令測試:深層連結、查詢參數、驗證檔案、所有 sitemap 網址。
  6. 從舊的網址字首資源提交「地址更改」,並提交新 sitemap。
  7. 在 Search Console 為幾個關鍵新網址請求編入索引;新主機透過驗證後,再提交給 IndexNow。
  8. 轉址至少保留一年,之後幾周兩個資源都要觀察。

常見問題

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 還顯示無法讀取?