Настройка robots.txt для сайта
robots.txt управляет доступом поисковых роботов к страницам сайта. Корректная настройка предотвращает индексацию технических страниц, дублей и закрытых разделов.
Базовая структура
User-agent: *
Disallow: /admin/
Disallow: /area51/
Disallow: /api/
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /search?
Disallow: /*?sort=
Disallow: /*?page=
Allow: /
Sitemap: https://example.ru/sitemap.xml
Что закрывать
Обязательно:
- Панели администрирования (
/admin/,/wp-admin/) - API-эндпоинты (
/api/) - Корзина, оформление заказа, личный кабинет
- Страницы результатов поиска по сайту
- Технические страницы (login, register, password-reset)
Рекомендуется:
- URL с параметрами фильтрации и сортировки (дубли контента)
- Страницы пагинации (или разрешить, если нет canonical)
-
/print/,/pdf/версии страниц
Не закрывать:
- CSS и JS файлы — Google должен видеть их для рендеринга
- Изображения (если хотите индексацию в Google Images)
Директивы для Яндекса
Яндекс поддерживает расширенный синтаксис:
User-agent: Yandex
Disallow: /search?
Disallow: /*?utm_
Clean-param: utm_source&utm_medium&utm_campaign&utm_content&utm_term
Clean-param сообщает Яндексу, какие GET-параметры не создают уникальный контент — предотвращает появление дублей.
Динамический robots.txt в Laravel
Route::get('/robots.txt', function () {
$content = view('robots')->render();
return response($content, 200, ['Content-Type' => 'text/plain']);
});
User-agent: *
@if (app()->environment('production'))
Disallow: /admin/
Disallow: /api/
Allow: /
Sitemap: {{ url('/sitemap.xml') }}
@else
Disallow: /
@endif
На staging/dev-окружении закрываем всё — чтобы поисковики не проиндексировали тестовый сайт.
Проверка
- Google Search Console → Инструмент проверки robots.txt
-
curl https://example.ru/robots.txt— убедиться что файл отдаётся правильно - Проверить что файл лежит строго в корне домена (не
/en/robots.txt)
Срок настройки: несколько часов.







