# Техническая оптимизация сайта: robots.txt, sitemap, дубли, 301

URL: https://make-seo.ru/shagi/tehnicheskaya-optimizaciya/
Описание: Техническое SEO своими руками: настроить robots.txt и sitemap.xml, найти и убрать дубли, поставить 301-редиректы и canonical, ускорить сайт.

TL;DR:
- Сначала доступность: нужные страницы открыты, мусор закрыт
- У каждой страницы один адрес, остальные ведут на него 301 или canonical
- Скорость и мобильная версия проверяются на реальных шаблонах

Техническая оптимизация отвечает на простой вопрос: может ли поисковик найти, прочитать и правильно понять каждую нужную страницу. Тексты из [шага 6](https://make-seo.ru/shagi/teksty/) не дадут результата, если страница закрыта в robots.txt, открывается по трём адресам или грузится так долго, что человек уходит. На этом шаге вы пройдёте пять зон: robots.txt, sitemap, дубли, редиректы и canonical, скорость.

Если вы делали [экспресс-аудит на шаге 1](https://make-seo.ru/shagi/audit-sayta/), у вас уже есть список проблем. Теперь их нужно исправить по порядку.

## Подготовка: чем проверять

| Инструмент | Что смотреть |
|---|---|
| Яндекс Вебмастер | Страницы в поиске, исключённые страницы, анализ robots.txt, проверка ответа сервера |
| Google Search Console | Отчёт об индексировании страниц, проверка URL |
| Краулер (Screaming Frog или аналог) | Коды ответов, дубли title, редиректы, canonical, битые ссылки |
| PageSpeed Insights | Скорость загрузки и Core Web Vitals |

Как настроить краулер и читать его отчёты — в разборе [краулеров сайта](https://make-seo.ru/instrumenty/krauler/).

## robots.txt: что закрыть, а что нет

Файл лежит в корне сайта: `https://site.ru/robots.txt`. Откройте его в браузере. Если файла нет или он пустой, поисковики будут обходить всё подряд, включая служебные страницы.

Пример для условного интернет-магазина чая на типовой CMS:

```
User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /search/
Disallow: /*?sort=
Disallow: /*?utm_
Allow: /upload/

Sitemap: https://site.ru/sitemap.xml
```

Что обычно закрывают:

- админку, личный кабинет, корзину и оформление заказа;
- внутренний поиск по сайту;
- страницы сортировки и служебные параметры в адресе;
- версии для печати.

Что закрывать нельзя:

- CSS и JS-файлы, которые нужны для отрисовки страницы;
- изображения товаров, если хотите трафик из поиска по картинкам;
- страницы фильтров, которые вы сделали посадочными под кластеры на [шаге 4](https://make-seo.ru/shagi/struktura-sayta/).

Яндекс поддерживает директиву `Clean-param` для параметров, которые не меняют содержимое страницы:

```
Clean-param: utm_source&utm_medium&utm_campaign
```

**Проверьте:** в Вебмастере откройте «Инструменты → Анализ robots.txt», вставьте несколько важных адресов и убедитесь, что они разрешены. Самая дорогая ошибка — строка `Disallow: /`, оставшаяся после разработки.

Помните: robots.txt запрещает обход, но не гарантирует, что страница выпадет из индекса. Для страниц, которые точно не должны быть в поиске, надёжнее мета-тег:

```html
<meta name="robots" content="noindex, follow">
```

## sitemap.xml: карта для поисковика

Карта сайта перечисляет страницы, которые вы хотите видеть в поиске. Откройте `https://site.ru/sitemap.xml` и проверьте:

1. В карте только страницы с кодом ответа 200.
2. Нет закрытых в robots.txt и помеченных `noindex` адресов.
3. Нет редиректов и дублей с параметрами.
4. Новые страницы попадают в карту автоматически.

Добавьте карту в Яндекс Вебмастер («Индексирование → Файлы Sitemap») и в Search Console. Через несколько дней посмотрите, нет ли ошибок обработки.

## Дубли: одна страница — один адрес

Дубль — одна и та же страница, доступная по разным URL. Поисковик сам выбирает, какую показывать, и выбирает не всегда ту, что нужно. Типичные источники:

| Вариант | Пример |
|---|---|
| С www и без | `site.ru` и `www.site.ru` |
| http и https | `http://site.ru` и `https://site.ru` |
| Слэш в конце | `/chaj/puer` и `/chaj/puer/` |
| index-файлы | `/catalog/` и `/catalog/index.php` |
| Параметры | `/chaj/?utm_source=vk`, `/chaj/?sort=price` |
| Регистр | `/Chaj/` и `/chaj/` |
| Товар в двух категориях | `/zelenyj/sencha/` и `/kitajskij/sencha/` |

**Как найти:** запустите краулер и отфильтруйте страницы с одинаковыми title или H1. В Вебмастере посмотрите исключённые страницы — Яндекс помечает те, что признал дублями.

**Как убрать:** для технических вариантов (www, https, слэш, index) — 301-редирект на основной адрес. Для параметров и товаров в нескольких категориях — canonical.

## 301-редирект: постоянный переезд адреса

301 говорит поисковику: страница переехала навсегда, передайте ей всё накопленное. Пример для сервера Apache в `.htaccess`:

```apache
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

Redirect 301 /old-page/ https://site.ru/new-page/
```

Для nginx:

```nginx
server {
    server_name www.site.ru;
    return 301 https://site.ru$request_uri;
}
```

Правила такие:

- редирект ведёт сразу на конечный адрес, без цепочек `A → B → C`;
- старая страница ведёт на самую близкую по смыслу новую, а не на главную;
- внутренние ссылки на сайте меняют на новый адрес, а не оставляют редиректу;
- 302 используют только для временного переноса.

**Проверьте:** в Вебмастере «Инструменты → Проверка ответа сервера» для старого адреса должен показать 301 и правильный адрес назначения. Если вы меняете много адресов сразу или переезжаете на новый домен, идите по [чек-листу переезда](https://make-seo.ru/chek-listy/pereezd/).

## canonical: когда редирект не подходит

Страница сортировки или фильтра нужна людям, поэтому редирект ставить нельзя. Тогда в её `<head>` указывают основную версию:

```html
<link rel="canonical" href="https://site.ru/chaj/puer/">
```

У основной страницы canonical указывает на саму себя. Частые ошибки:

- canonical на все страницы пагинации ведёт на первую — так вторая и дальше страницы каталога выпадают; обычно каждой странице пагинации ставят canonical на саму себя;
- canonical ведёт на страницу с редиректом или `noindex`;
- в canonical относительный адрес или адрес с http вместо https.

Canonical — подсказка, а не команда: если страницы сильно различаются, поисковик может его проигнорировать.

## Коды ответа и битые ссылки

Краулер покажет, какие адреса отдают ошибки. Что с ними делать:

| Код | Что значит | Действие |
|---|---|---|
| 200 | Всё в порядке | — |
| 301 | Постоянный редирект | Заменить ссылки на конечный адрес |
| 404 | Страница не найдена | Убрать внутренние ссылки или поставить 301 на близкую страницу |
| 5xx | Ошибка сервера | Разбираться с хостингом или разработчиком срочно |

Проверьте и обратное: несуществующий адрес вроде `/proverka-404/` должен отдавать код 404, а не 200 с текстом «страница не найдена». Иначе в индекс попадает мусор.

## Скорость и мобильная версия

Откройте PageSpeed Insights и проверьте не только главную, а каждый тип шаблона: категорию, карточку, статью. Обращайте внимание на Core Web Vitals: скорость отрисовки основного контента, стабильность вёрстки, отклик на действия.

Что чаще всего тормозит небольшие сайты:

- тяжёлые изображения — переведите в WebP, задайте размеры, включите отложенную загрузку;
- много сторонних скриптов: виджеты, чаты, счётчики, которые давно не нужны;
- отсутствие кеширования и сжатия на сервере;
- шрифты, которые грузятся с нескольких внешних сервисов.

Мобильную версию проверьте руками на телефоне: читается ли текст без увеличения, не налезают ли кнопки, работает ли меню и форма. Многие ищут с телефона, и неудобная мобильная страница теряет людей.

## HTTPS и зеркала

Сайт должен открываться только по `https`, сертификат — действовать без предупреждений браузера. Убедитесь, что в Вебмастере выбрано главное зеркало, совпадающее с адресом, на который ведут ваши редиректы.

## Что должно получиться

- robots.txt закрывает служебные разделы и не мешает обходу нужных страниц; путь к sitemap указан.
- sitemap.xml содержит только рабочие канонические адреса и добавлен в Вебмастер и Search Console.
- Технические дубли склеены 301-редиректами, параметры и сортировки размечены canonical.
- Внутренние ссылки ведут на конечные адреса, битых ссылок и цепочек редиректов нет.
- Основные шаблоны проверены на скорость и на телефоне, явные тормоза убраны.

Техника приведена в порядок — пора показать посетителю, что вам можно доверять. Это [шаг 8: коммерческие факторы](https://make-seo.ru/shagi/kommercheskie-faktory/).

## Частые вопросы

### Чем robots.txt отличается от noindex?

robots.txt запрещает роботу заходить на страницу, а noindex разрешает зайти, но просит не показывать её в поиске. Если закрыть страницу в robots.txt, робот не увидит на ней noindex, и адрес может остаться в индексе по внешним ссылкам. Для страниц, которые надо убрать из поиска, сначала ставят noindex и дают роботу их обойти.

### Что лучше для дублей — 301 или canonical?

Если вторая версия страницы никому не нужна, ставьте 301: он надёжнее и сразу ведёт человека на правильный адрес. Canonical используют, когда страница нужна посетителям, например сортировка, фильтр или адрес с меткой рекламы, но в поиске должна быть основная версия.

### Как быстро Яндекс замечает исправления?

По-разному: зависит от размера сайта и частоты обхода. Ускорить можно, отправив важные адреса на переобход в Вебмастере и обновив sitemap. Результат исправлений смотрите в отчётах об индексировании через несколько недель, а не на следующий день.

### Нужно ли добиваться 100 баллов в PageSpeed Insights?

Нет, баллы — ориентир, а не цель. Важно, чтобы основные показатели Core Web Vitals были в зелёной зоне, а страница быстро показывала содержимое на телефоне. Гонка за последними баллами часто стоит дорого и почти ничего не меняет в поиске.

### Можно ли закрыть страницы пагинации от индексации?

Обычно не стоит: через пагинацию поисковик находит товары и статьи на дальних страницах. Лучше оставить их открытыми, поставить каждой canonical на саму себя и убедиться, что у них не дублируются title с первой страницей, например добавив номер страницы.

