Техническое SEO
robots.txt и noindex, sitemap, canonical, статусы и редиректы, JSON-LD.
Обновлено
Что такое техническое SEO
Техническое SEO = убедиться, что поисковики могут найти, прочитать, понять и правильно проиндексировать каждую страницу — и не индексируют то, что не нужно. Эта часть почти полностью зависит от разработчика. Отличный контент ничего не значит, если Google до него не добрался.
robots.txt — что краулеру можно обходить
Файл в корне домена (/robots.txt) с правилами для краулеров:
User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /api/og/
Sitemap: https://site.ru/sitemap.xml
| Правило | Означает |
|---|---|
User-agent: * |
для всех роботов (или Googlebot, GPTBot, YandexBot и т. д.) |
Disallow: /admin/ |
не обходить пути, начинающиеся с /admin/ |
Allow |
исключение из Disallow — побеждает самое конкретное (самое длинное) правило |
Sitemap |
где sitemap |
Главная ловушка: Disallow не убирает страницу из индекса. Google может проиндексировать URL (без содержимого), если на него ведут ссылки. Чтобы страница не индексировалась, она должна быть доступна и иметь noindex.
// app/robots.ts
export default function robots(): MetadataRoute.Robots {
return { rules: [{ userAgent: '*', disallow: ['/admin/', '/api/'] }], sitemap: 'https://site.ru/sitemap.xml' }
}Meta robots — что можно индексировать
<meta name="robots" content="noindex, follow" />| Значение | Эффект |
|---|---|
noindex |
не включать страницу в результаты |
nofollow |
не переходить по ссылкам на странице |
noarchive, nosnippet, max-image-preview:large |
управление показом |
Для не-HTML файлов (PDF) используют HTTP-заголовок X-Robots-Tag: noindex. В Next: metadata.robots = { index: false }.
Что ставить на noindex: страницы внутреннего поиска, бесполезные отфильтрованные результаты, корзину, аккаунт, страницы «спасибо за заказ», тестовые / preview-страницы (Vercel сам добавляет noindex на preview).
Sitemap
Список всех URL, которые вы хотите видеть в индексе Google, с датой последнего изменения. В Next генерируется из данных (app/sitemap.ts — см. Метаданные и SEO). Отправляется в Search Console. Только канонические URL со статусом 200, доступные для индексации.
Canonical — одна версия каждой страницы
Одна и та же страница может быть доступна по нескольким URL:
https://site.ru/product/laptop
https://site.ru/product/laptop?utm_source=vk
https://www.site.ru/product/laptop/
Для Google это дубли, которые делят между собой сигналы. Canonical говорит, какая из них оригинал:
<link rel="canonical" href="https://site.ru/product/laptop" />В Next: alternates: { canonical: '/product/laptop' } + metadataBase. Выберите одну форму и используйте её везде: с www или без, с / в конце или без, без параметров отслеживания.
Статусы и редиректы
| Ситуация | Правильный статус |
|---|---|
| страница существует | 200 |
| URL изменился навсегда | 301 / 308 — передаёт SEO-сигналы |
| временно | 302 / 307 |
| не существует | 404 (а не 200 с «не найдено» — это «soft 404») |
| удалена навсегда | 410 |
| сервер временно недоступен | 503 |
В Next: redirect() / permanentRedirect(), redirects в next.config.ts, notFound().
Структурированные данные (JSON-LD)
JSON-блок, который описывает, что это за страница — товар, статья, рецепт, событие, FAQ — в словаре schema.org. Google использует его для расширенных результатов: звёзды, цена, наличие, хлебные крошки.
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Product',
name: product.name,
offers: { '@type': 'Offer', price: product.price, priceCurrency: 'RUB', availability: 'https://schema.org/InStock' },
}
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd).replace(/</g, '\\u003c') }} />Проверяется в Rich Results Test.
Другие важные технические вещи
| Элемент | Почему |
|---|---|
| HTTPS | сигнал ранжирования, обязательно |
| мобильная версия (viewport, адаптивная вёрстка) | Google индексирует мобильную версию (mobile-first indexing) |
| Core Web Vitals | часть удобства страницы |
hreflang |
многоязычные сайты: alternates.languages в Next |
| чистые URL | /blog/nazvanie-stati, а не /p?id=123&ref=x |
внутренние ссылки через <a href> |
Googlebot переходит только по настоящим ссылкам, а не по onClick |
изображения с alt и понятными именами |
они появляются и в Google Картинках — см. Оптимизация изображений |
Коротко
robots.txtуправляет сканированием;noindex— индексацией. Не путайте их.- Sitemap с каноническими URL; canonical для дублей; правильные статусы и редиректы.
- JSON-LD для расширенных результатов; мобильная версия, HTTPS, скорость, настоящие ссылки.