Генератор добавил /api/products/ вместе с карточками товаров. Ответ содержит JSON — данные для приложения, — поэтому открывается успешно, но не является пользовательской карточкой. Найдите публичную карточку товара, которую должен открыть посетитель, и оставьте в карте её URL. Служебный адрес API, через который приложение получает данные товара, исключите из списка; ответ 200 не делает его карточкой.
Определите, зачем нужен каждый адрес
Sitemap помогает сообщить поисковой системе о выбранных URL, но не гарантирует их индексацию. Официальная документация.
Система управления сайтом (CMS) может хранить в одной таблице /products/a/, /api/products/a и /downloads/a.pdf. Первый адрес служит карточкой, второй — источником данных приложения, третий — инструкцией. Начните с этой классификации, а не с универсальной фильтрации расширений. У каждого маршрута должен быть понятный пользователь и ожидаемый ответ. Если адрес нужен только внутреннему обмену приложения, его появление в sitemap обычно показывает ошибку выбора источника. JSON может быть самостоятельным публичным документом, поэтому сначала выясните, для кого создан адрес. В этом примере API обслуживает каталог, а пользователю нужна HTML-карточка.
Карточка, API и инструкция PDF
| URL в карте | Формат ответа | Что выбрать вместо него | Что проверить на странице |
|---|---|---|---|
| /product/a/ | HTML-карточка | Оставить по назначению | Контент и canonical |
| /api/products/a | JSON-данные | Исключить служебный URL | Не подменять карточку |
| /api/account | Личные сведения | Проверить авторизацию | Карта не защита |
| /manual.pdf | Публичный документ | Решить отдельно | Формат сам не запрет |
Сравните Content-Type и тело ответа
Сохраните Content-Type и начало тела каждого подозрительного loc. У JSON проверьте, что перед вами данные, а не HTML-страница ошибки, ошибочно названная API. Для HTML откройте гостевой интерфейс и сравните назначение. Посмотрите, нет ли перенаправления с служебного адреса на экран входа. В некоторых системах расширение отсутствует, поэтому вид /data/a не объясняет формат. Источник генерации URL должен быть известен: маршруты приложения, записи CMS или результаты обхода. Если URL взяты из CMS, меняйте её фильтр типов записей. Если их собирает обходчик, найдите страницу, которая ссылается на API как на обычную карточку.
Формат служебного адреса можно получить командой терминала; передайте её разработчику.
curl -sS -D headers.txt -o response.html 'https://example.com/api/products/a'Заголовки в headers.txt покажут Content-Type, а response.html — фактическое тело адреса из sitemap. JSON с полями товара не становится HTML-страницей из-за статуса 200. Найдите отдельный публичный URL карточки и проверьте его. Замените example.com своим доменом; этот GET не изменяет настройки сайта. Справка curl.
Content-Type: application/json и JSON с данными товара показывают источник данных. Найдите настоящую HTML-карточку, на которую должен попадать посетитель. Удаление API из sitemap не закрывает его от прямых запросов; личные данные защищают авторизацией.
Проверьте список на тестовых записях
Попросите разработчика на тестовой копии передать генератору три записи: публичную карточку, служебный адрес и опубликованную инструкцию. Выпишите ожидание для каждой до запуска. После построения карты проверьте фактические loc. Затем добавьте приватный адрес и черновик документа: они не должны появиться только потому, что имеют зарегистрированный маршрут. Проверьте также служебный адрес без префикса /api/. Если он попадает в sitemap, генератор исключает только знакомое имя пути, а не все служебные записи.
Включайте только нужные публичные типы
В настройке генератора перечислите нужные публичные типы, например товары и статьи. Не выгружайте все маршруты приложения: среди них могут быть обработчики форм, обратные вызовы платёжной системы и панели управления. Для CMS проверьте статус публикации и SEO-исключения соответствующего типа. Если генератор получает адреса из обхода, выясните, почему публичные страницы ссылаются на API как на навигационное назначение. Тогда одной очистки sitemap недостаточно: нужно исправить источник таких ссылок. Сохраняйте API-доступ приложения, который требуется реальным пользовательским функциям.
Проверьте карту и каталог после изменения
Карточка товара остаётся в карте, её API больше не перечислен. Откройте карточку напрямую и через каталог: данные и фотографии должны загружаться. Публичный PDF оставьте или исключите по его назначению, а не только по формату.
Читайте также: Sitemap.xml: полное руководство по созданию и оптимизации для SEO и HTTP статус-коды: полный справочник (200, 301, 404, 500...). Проверки сайта доступны на странице технического аудита reChecker.