Как разместить app-ads.txt, если у вас нет сайта
Что на самом деле нужно краулеру, три способа дать ему хост без создания сайта, ловушки с редиректами в каждом и как убедиться, что всё работает.
Сайт не нужен — нужно лишь имя хоста под вашим контролем, которое отдаёт /app-ads.txt как простой текст с HTTP 200 и без редиректа. Укажите этот адрес в поле сайта разработчика на странице в магазине — в App Store это Marketing URL, — и краулер прочитает файл там. AdMob называет Firebase Hosting допустимым вариантом.
Сделайте это за несколько минут
AppFoyer размещает страницы, о которых это руководство, — политику конфиденциальности, условия использования, поддержку, удаление аккаунта и app-ads.txt — на отдельном поддомене, без собственного домена и сервера. Одно приложение — бесплатно, и ничто из того, что требует магазин, никогда не бывает платным.
Проверено 12 октября 2026 г. Правила магазинов меняются, иногда без предупреждения. Всё ниже ссылается на официальную документацию, и авторитетна именно она, а не эта страница. Если они расходятся, прав магазин. Это руководство переведено с английского; цитаты из документации магазинов приведены в оригинале на английском.
Сайт не нужен — нужно лишь имя хоста под вашим контролем, которое отдаёт /app-ads.txt как простой
текст с HTTP 200 и без редиректа. Укажите этот адрес в поле сайта разработчика на странице в
магазине — в App Store это Marketing URL, в Google Play это Website в разделе Store listing contact
details, — и краулер прочитает файл там.
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 в корень, вы можете разместить файл app-ads.txt в Firebase Hosting.) Хостинг платформы — ожидаемое решение, а не обходной путь.
Что на самом деле нужно краулеру
Краулер не ищет ваше приложение по имени пакета. Он берёт сайт разработчика со страницы в магазине,
оставляет имя хоста и запрашивает /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: хостинг страниц для соответствия требованиям магазинов
Если вам также нужны политика конфиденциальности, страница поддержки или URL удаления аккаунта — а
приложению с рекламой почти всегда нужна первая, — тот же хост может отдавать их все. Именно это делает
AppFoyer: каждое приложение получает собственный поддомен, который отдаёт app-ads.txt как простой
текст без редиректа, рядом со страницами, которые требуют магазины. AdMob сообщает “app-ads.txt file
found and verified” для приложений в обоих магазинах, у которых сайт разработчика — адрес AppFoyer
(проверено в октябре 2026 года). Собственных результатов обхода от других рекламных сетей у нас пока нет.
Проверьте раньше краулера
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.