webroad.online
  1. 1Веб
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Инструменты
  8. 8React
  9. 9Стейт-менеджмент
  10. 10Next.js
  11. 11Формы
  12. 12Данные и бэкенд
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Анимации
  16. 16Тестирование
  17. 17Архитектура
SEO · Урок 2 из 5

Техническое 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, скорость, настоящие ссылки.

Официальные источники

Упражнения

Была ли страница полезной?

Один клик — без регистрации.