Ospitare app-ads.txt quando non hai un sito web
Di cosa ha davvero bisogno il crawler, tre modi per dargli un host senza costruire un sito, le trappole dei redirect di ciascuno e come verificare che funzioni.
Non ti serve un sito web, solo un hostname che controlli e che serva /app-ads.txt come testo semplice con HTTP 200 e senza redirect. Inserisci quell'indirizzo nel campo del sito web dello sviluppatore della scheda dello store, la Marketing URL sull'App Store, e il crawler legge il file lì. AdMob indica Firebase Hosting come accettabile.
Fallo invece in pochi minuti
AppFoyer ospita le pagine di cui parla questa guida (informativa sulla privacy, termini, supporto, eliminazione dell'account e app-ads.txt) su un sottodominio dedicato, senza un tuo dominio o server. Un'app è gratis, e niente di ciò che uno store richiede è mai a pagamento.
Verificata il 12 ottobre 2026. Le policy degli store cambiano, a volte senza preavviso. Tutto ciò che segue rimanda alla documentazione ufficiale, ed è quella pagina, non questa, a fare fede. Se le due non concordano, ha ragione lo store. Questa guida è tradotta dall'inglese; le citazioni dalla documentazione degli store restano nell'originale inglese.
Non ti serve un sito web, solo un hostname che controlli e che serva /app-ads.txt come testo
semplice con HTTP 200 e senza redirect. Inserisci quell’indirizzo nel campo del sito web dello
sviluppatore della scheda dello store (la Marketing URL sull’App Store, il campo Website in Store
listing contact details su Google Play) e il crawler legge il file lì.
AdMob lo dice chiaramente: “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.” (Se non hai un sito web adatto che consenta di caricare un file app-ads.txt al livello radice, puoi usare Firebase Hosting per ospitare il tuo file app-ads.txt.) L’hosting di piattaforma è la risposta prevista, non un ripiego.
Di cosa ha davvero bisogno il crawler
Il crawler non cerca la tua app per nome del pacchetto. Prende il sito web dello sviluppatore dalla
scheda dello store, ne conserva l’hostname e recupera /app-ads.txt alla sua radice. Le regole di
AdMob:
- La radice, non un percorso. Una scheda che punta a
example.com/myappviene controllata suexample.com/app-ads.txt. - Un livello di sottodominio. Il crawler “probe[s] up to one subdomain level from the developer
website” (esplora fino a un livello di sottodominio a partire dal sito web dello sviluppatore).
www.em.contano come il dominio stesso. - Servito in modo semplice.
200 OK,Content-Type: text/plain, nessun redirect, nessun login, niente inrobots.txtche lo blocchi.
Quindi il compito è: un indirizzo che non cambierà, che serve un solo file di testo, correttamente, per anni. Le tre opzioni qui sotto lo fanno tutte; cambia quanta manutenzione richiedono.
Opzione 1: Firebase Hosting
Quella indicata da AdMob. Un progetto Firebase gratuito ti dà un hostname come
your-project.web.app.
- Crea un progetto nella console di Firebase e installa la Firebase CLI.
- In una cartella vuota, esegui
firebase init hostinge mantieni la directory predefinitapublic. - Metti il tuo
app-ads.txtinpublic/, accanto all’index.htmlgenerato. - Esegui
firebase deploy --only hosting. - Imposta
https://your-project.web.appcome sito web dello sviluppatore in ogni scheda dello store.
La trappola: se in seguito colleghi un dominio personalizzato e scegli di reindirizzare
l’indirizzo web.app verso di esso, l’indirizzo nella tua scheda ora risponde con un redirect. O
mantieni la scheda sull’indirizzo che serve il file direttamente, oppure aggiorni la scheda con il
nuovo dominio.
Opzione 2: GitHub Pages o un altro host statico
Qualsiasi host statico funziona se il file finisce alla radice dell’hostname che dichiari.
Su GitHub Pages quel dettaglio conta: un sito di progetto si trova su username.github.io/repo/,
ma il crawler controlla solo username.github.io/app-ads.txt. Il file deve stare nel sito
utente, cioè il repository chiamato username.github.io, oppure il progetto deve avere un proprio
dominio personalizzato.
Vale la stessa trappola dei redirect: una volta configurato un dominio personalizzato, GitHub Pages
reindirizza l’indirizzo github.io verso di esso. Dichiara l’indirizzo che serve il file senza
passaggi intermedi.
Opzione 3: una pagina di conformità ospitata
Se ti servono anche una privacy policy, una pagina di supporto o un URL per l’eliminazione
dell’account (e un’app con annunci ha quasi sempre bisogno della prima), lo stesso host può servirle
tutte. È ciò che fa AppFoyer: ogni app riceve un proprio sottodominio che serve app-ads.txt come
testo semplice senza redirect, accanto alle pagine richieste dagli store. AdMob segnala “app-ads.txt
file found and verified” per app su entrambi gli store il cui sito web dello sviluppatore è un
indirizzo AppFoyer (verificato a ottobre 2026). Non abbiamo ancora risultati di scansione nostri da
altre reti pubblicitarie.
Controllalo prima del crawler
curl -i https://your-host.example/app-ads.txt
Ti servono HTTP/2 200 (oppure HTTP/1.1 200 OK), content-type: text/plain, nessun header
location: e le tue righe nel corpo. Un 301 o un 302 qui è l’errore invisibile più comune.
Poi aspetta. AdMob dice “it can take up to 24 hours for AdMob to crawl and verify your app-ads.txt files” (possono essere necessarie fino a 24 ore perché AdMob scansioni e verifichi i tuoi file app-ads.txt). Lo stato si trova in Apps → View all apps → app-ads.txt; se dopo un giorno dice ancora not found, la guida sul file non trovato ripercorre le cause in ordine.
Le fonti ufficiali
- Set up app-ads.txt — Guida di AdMob. La frase su Firebase Hosting, le regole su radice e sottodomini e il dato delle 24 ore vengono da questa pagina.
- Understand app-ads.txt file statuses — Guida di AdMob. Dove si trova lo stato e cosa significa ciascuno.
- ads.txt / app-ads.txt specification — IAB Tech Lab.