沒有網站時如何代管 app-ads.txt
爬蟲真正需要什麼、不必架站也能提供主機的三種方式、每種方式的重新導向陷阱,以及如何確認它可以運作。
你不需要網站,只需要一個你能掌控的主機名稱,以純文字、HTTP 200、不經重新導向的方式提供 /app-ads.txt。把這個網址填入商店資訊頁的開發人員網站欄位(在 App Store 上是 Marketing URL),爬蟲就會在那裡讀取檔案。AdMob 點名 Firebase Hosting 是可以接受的。
改用幾分鐘完成這件事
AppFoyer 託管這篇指南所談的頁面:隱私權政策、服務條款、支援、帳戶刪除和 app-ads.txt,放在各自的子網域上,你不需要自己的網域或伺服器。一個應用程式免費,而且商店要求的任何內容都不會放在付費牆後面。
查核日期:2026年10月12日。 商店政策會變動,有時不會事先通知。以下所有內容都附上官方文件的連結,具有權威的是那個頁面,而不是本頁。如果兩者不一致,以商店為準。 本指南譯自英文;引用的商店文件保留英文原文。
你不需要網站,只需要一個你能掌控的主機名稱,以純文字、HTTP 200、不經重新導向的方式提供 /app-ads.txt。 把這個網址填入商店資訊頁的開發人員網站欄位(在 App Store 上是 Marketing URL,在 Google Play 上是 Store listing contact details 底下的 Website),爬蟲就會在那裡讀取檔案。
AdMob 直接這樣說:「If you don’t have a suitable website that allows the uploading of an app-ads.txt file at the root level, you can use Firebase Hosting to host your app-ads.txt file.」(譯文:如果你沒有可在根層級上傳 app-ads.txt 檔案的合適網站,可以使用 Firebase Hosting 代管你的 app-ads.txt 檔案。)平台代管是預期中的做法,而不是權宜之計。
爬蟲真正需要什麼
爬蟲不會依套件名稱查找你的應用程式。它從你的商店資訊頁取得開發人員網站,保留主機名稱,然後在其根目錄擷取 /app-ads.txt。AdMob 的規則:
- 根目錄,而不是路徑。 指向
example.com/myapp的商店資訊頁,會在example.com/app-ads.txt被檢查。 - 一層子網域。 爬蟲會「probe[s] up to one subdomain level from the developer website」(譯文:從開發人員網站往下最多探測一層子網域)。
www.和m.視同網域本身。 - 直接提供。
200 OK、Content-Type: text/plain、沒有重新導向、不需登入,robots.txt中也沒有任何東西擋住它。
所以要做的事是:一個不會變動的網址,正確地提供一個文字檔,維持好幾年。以下三個選項都能做到;差別在於你要維護多少。
選項 1:Firebase Hosting
AdMob 點名的那一個。一個免費的 Firebase 專案會給你類似 your-project.web.app 的主機名稱。
- 在 Firebase 控制台建立專案,並安裝 Firebase CLI。
- 在一個空資料夾中執行
firebase init hosting,保留預設的public目錄。 - 把你的
app-ads.txt放進public/,和產生的index.html放在一起。 - 執行
firebase deploy --only hosting。 - 在每個商店資訊頁中,把
https://your-project.web.app設為開發人員網站。
陷阱:如果你之後連結自訂網域,並選擇把 web.app 網址重新導向到它,你商店資訊頁上的網址就會改為回應重新導向。要嘛讓商店資訊頁繼續使用直接提供檔案的網址,要嘛把商店資訊頁更新為新網域。
選項 2:GitHub Pages 或其他靜態代管
只要檔案最後位於你所宣告主機名稱的根目錄,任何靜態代管服務都可以。
在 GitHub Pages 上,這個細節很重要:專案網站位於 username.github.io/repo/,但爬蟲只會檢查 username.github.io/app-ads.txt。檔案必須放在使用者網站,也就是名為 username.github.io 的存放庫中,否則該專案就需要自己的自訂網域。
同樣的重新導向陷阱也適用:一旦設定了自訂網域,GitHub Pages 就會把 github.io 網址重新導向過去。請宣告不需多跳一次就能提供檔案的那個網址。
選項 3:代管的合規頁面
如果你還需要隱私權政策、支援頁面或帳戶刪除網址(而有廣告的應用程式幾乎一定需要第一個),同一個主機就能提供全部。這正是 AppFoyer 做的事:每個應用程式都有自己的子網域,以純文字、不經重新導向的方式提供 app-ads.txt,旁邊就是商店要求的頁面。對於開發人員網站是 AppFoyer 網址、分別在兩個商店上架的應用程式,AdMob 回報「app-ads.txt file found and verified」(已於 2026 年 10 月確認)。我們目前還沒有其他廣告聯播網自己的爬取結果。
在爬蟲之前先檢查
curl -i https://your-host.example/app-ads.txt
你要看到的是 HTTP/2 200(或 HTTP/1.1 200 OK)、content-type: text/plain、沒有 location: 標頭,而且內文中有你的那幾行。這裡出現 301 或 302,是最常見的隱形失敗原因。
然後等待。AdMob 說「it can take up to 24 hours for AdMob to crawl and verify your app-ads.txt files」(譯文:AdMob 可能需要最多 24 小時來爬取並驗證你的 app-ads.txt 檔案)。狀態位於 Apps → View all apps → app-ads.txt;如果過了一天仍顯示找不到,找不到檔案指南會依序說明各種原因。
權威來源
- Set up app-ads.txt:AdMob 說明。關於 Firebase Hosting 的那句話、根目錄與子網域規則,以及 24 小時這個數字,都出自此頁。
- Understand app-ads.txt file statuses:AdMob 說明。狀態在哪裡查看,以及每種狀態的意義。
- ads.txt / app-ads.txt specification:IAB Tech Lab。