Две разные задачи под одним доменом
Страница сайта предназначена для человека и поисковой системы: у неё есть заголовок, текст и оформление. Адрес API возвращает структурированные данные, обычно в формате JSON, которые потребляет приложение или скрипт. Смешивать эти два мира в одном пространстве адресов опасно.
Как принято строить адреса API
Адрес описывает ресурс, а действие определяет метод запроса. Такой подход делает интерфейс предсказуемым.
GET /api/products — список товаров
GET /api/products/125 — один товар
POST /api/products — создание
DELETE /api/products/125 — удаление
Почему адреса API не должны попадать в индекс
- ответ в формате JSON не имеет ценности для пользователя поиска;
- робот тратит на такие адреса часть бюджета обхода;
- в выдаче могут оказаться технические данные, которые не предназначены для публикации.
Самый простой способ — вынести все адреса интерфейса под единый префикс и закрыть его в файле robots.txt.
Заголовки как надёжная защита
Директива в robots.txt лишь просит робота не заходить. Для гарантии добавьте к ответам API заголовок X-Robots-Tag со значением noindex — он действует независимо от того, обнаружил ли робот адрес по ссылке.
Правило: страницы сайта и API — разные зоны. Префикс /api/ закрывается целиком, а публичное содержимое живёт вне его.
Когда страница получает данные из API
Если страница подгружает содержимое из API уже в браузере, робот может его не дождаться. Поэтому ключевой текст лучше вставлять в HTML на сервере, а API использовать для обновлений после загрузки, как описано в статье про индексацию страниц, созданных JavaScript.
Доступ к API и разграничение прав
Закрытие от индексации — не то же самое, что защита данных. Если интерфейс отдаёт информацию, которую нельзя показывать всем, доступ к ней должен ограничиваться авторизацией, а не только запретом в robots.txt. Робот честно соблюдает запреты, но злоумышленник — нет.
- публичные данные — открытые адреса без авторизации, но с запретом индексации;
- приватные данные — только после проверки прав пользователя;
- служебные данные — доступны лишь внутренним системам.
Коды ответов и формат ошибок в API
Интерфейс должен возвращать корректные коды: 200 при успехе, 404 при отсутствии ресурса, 400 при неверном запросе. Единый формат сообщений об ошибках упрощает жизнь тем, кто использует API. Для самого SEO это тоже полезно: даже закрытые адреса не должны отвечать кодом 200 на несуществующие запросы.
Частые вопросы
Нужно ли закрывать адреса API от индексации?
Да, они не предназначены для пользователей поиска и лишь тратят бюджет обхода, поэтому их закрывают через robots.txt и заголовок noindex.
Чем адрес API отличается от адреса страницы?
Адрес API отдаёт структурированные данные для приложения, а страница — оформленное содержимое для человека и поисковой системы.
Как удобнее всего отделить API от остального сайта?
Разместить все его адреса под единым префиксом, например /api/, и закрыть этот префикс целиком.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.