Все правила для .htaccess в одном месте: от редиректа одной страницы до переезда сайта. Каждый блок кода проверен на Apache 2.4 и открывается в нашей песочнице кнопкой «Проверить в песочнице» — можно подставить свой домен и сразу увидеть, куда уйдёт каждый адрес.
Четыре железных правила перед тем, как начать:
Первое — от частных правил к общим. Apache читает файл сверху вниз и останавливается на первом сработавшем правиле с флагом L. Сначала редиректы конкретных страниц, потом правила для разделов, в конце — склейка зеркал и HTTPS. Иначе общее правило перехватит запрос раньше частного.
Второе — никаких цепочек. Каждый адрес должен попадать на конечную страницу за один редирект. Два редиректа подряд — это вдвое дольше для посетителя, лишние запросы для робота и размытые сигналы для поисковика. Поэтому в каждом правиле пишите сразу окончательный адрес: с https и главным зеркалом.
Третье — редиректы выше правил CMS. Почти любая CMS в конце .htaccess отправляет все несуществующие адреса на свой index.php. Правило, записанное ниже, до редиректа просто не дойдёт.
Четвёртое — браузер запоминает 301. После правки браузер может долго вести по старому редиректу. Проверяйте в режиме инкогнито, нашей проверкой цепочки редиректов или в Яндекс Вебмастере — а до загрузки на сервер в песочнице для .htaccess.
Перед любыми правилами mod_rewrite в файле должна быть строка:
RewriteEngine On
Без неё ни одно правило RewriteRule не работает. Строка RewriteEngine Off в любом месте выключает все правила файла.
Правила удобно оборачивать в блок — тогда на сервере без mod_rewrite сайт не упадёт с ошибкой 500, правила просто не выполнятся:
<IfModule mod_rewrite.c>
RewriteEngine On
# … правила …
</IfModule>
Во всех примерах замените site.ru на свой домен. Новый адрес пишите полностью — с https и главным зеркалом, — тогда не будет второго редиректа.
Через RewriteRule (рекомендуем):
RewriteRule ^old-page/?$ https://site.ru/new-page/ [R=301,L]
В .htaccess шаблон сравнивается с адресом без ведущего слеша: для /old-page/ — это old-page/. /? в конце ловит адрес и со слешем, и без. Точки и другие спецсимволы экранируйте: ^old\.html$. UTM-метки и другие параметры перейдут на новый адрес сами.
Через Redirect (простая директива):
Redirect 301 /old-page/ https://site.ru/new-page/
Подходит, если в файле нет RewriteRule. У директивы две ловушки. Она срабатывает на всё, что начинается с указанного адреса: /old-page/ заберёт и /old-page/photo/. И она выполняется после правил mod_rewrite: если ниже стоит правило CMS «всё на index.php», к новому адресу прилипнет служебный параметр вроде ?q=old-page/. Если в файле уже есть RewriteRule — пишите редиректы тоже через RewriteRule.
С www → без www (главное зеркало — без www):
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
%1 — то, что попало в скобки условия, то есть домен без «www.». Правило работает для любого домена без правки.
Без www → с www (главное зеркало — с www):
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
В интернете часто встречается условие ^([^www].*)$ — оно ошибочное. [^www] означает «первая буква не w», поэтому правило не сработает для доменов на w: wildberries.ru, wb.ru, web-studio.ru.
Основной вариант:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Вторую строку ставьте всегда. На многих хостингах (в том числе Beget) и с CDN (Cloudflare) HTTPS-соединение принимает nginx или прокси, а Apache получает запрос уже по HTTP — и %{HTTPS} всегда равен off. Без проверки заголовка X-Forwarded-Proto будет бесконечный редирект и ошибка ERR_TOO_MANY_REDIRECTS. Cloudflare тоже передаёт этот заголовок, отдельное правило с CF-Visitor не нужно.
HTTPS → HTTP (если отказываетесь от SSL):
RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
Если на сайте был включён заголовок HSTS, браузеры, которые его запомнили, всё равно будут открывать сайт по https, пока не истечёт срок. Без серьёзной причины от HTTPS не отказывайтесь.
Если поставить правила для HTTPS, www и слеша по отдельности, адрес http://www.site.ru/page пройдёт три редиректа. Чтобы любой вариант адреса попадал на конечный за один шаг, каждое правило сразу ведёт на окончательный адрес, а правило для слеша стоит первым.
Без www, HTTPS, слеш в конце (конечный вид: https://site.ru/page/):
# 1. Слеш в конце — сразу на https и главное зеркало
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-z0-9]{1,5}|/)$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1/ [R=301,L]
# 2. www → без www
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
# 3. HTTP → HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
Без www, HTTPS, без слеша в конце (конечный вид: https://site.ru/page):
# 1. Убрать слеш — сразу на https и главное зеркало
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ https://site.ru/$1 [R=301,L]
# 2. www → без www
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
# 3. HTTP → HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
Такой набор под ваш домен и CMS собирает генератор 301 редиректов и сразу показывает, сколько шагов будет для разных адресов.
Добавить слеш (site.ru/page → site.ru/page/):
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-z0-9]{1,5}|/)$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1/ [R=301,L]
Условия защищают то, что ломать нельзя: существующие файлы, адреса с расширением (/robots.txt, /sitemap.xml, картинки) и отправку форм методом POST — при редиректе данные формы теряются. GET-параметры (?page=2) сохраняются сами: RewriteRule их не видит и не мешает.
Убрать слеш (site.ru/page/ → site.ru/page):
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ https://site.ru/$1 [R=301,L]
!-d исключает настоящие папки на сервере: для них Apache сам добавит слеш обратно, и получится цикл.
Все варианты одним правилом (/index.php, /catalog/index.html → адрес раздела):
RewriteCond %{THE_REQUEST} \s/[^?\s]*index\.(php|html?)[?\s] [NC]
RewriteRule ^(.*/)?index\.(php|html?)$ https://site.ru/$1 [R=301,L,NC]
Условие проверяет %{THE_REQUEST} — строку, которую прислал браузер. Она не меняется, когда CMS сама внутренне передаёт запрос на index.php. В интернете часто встречается вариант с RewriteCond %{REQUEST_URI} /index.php — на сайте с CMS он опасен: после внутренней подмены адреса REQUEST_URI становится /index.php, и редирект на главную срабатывает для всех страниц сайта.
Параметры при этом сохраняются: /index.php?n=1 → /?n=1.
Динамический адрес → ЧПУ (site.ru/catalog.php?id=229 → site.ru/divany/):
RewriteCond %{QUERY_STRING} ^id=229$
RewriteRule ^catalog\.php$ https://site.ru/divany/? [R=301,L]
RewriteRule не видит часть адреса после «?», поэтому параметры проверяются условием. $ в конце условия обязателен: без него ^id=229 поймает и id=2290. Знак ? в конце нового адреса отбрасывает старые параметры. Без него получится /divany/?id=229, а если правило не привязано к конкретной странице (^.*$), — бесконечный редирект: новый адрес снова попадает под то же условие.
Убрать один параметр-дубль (/catalog/?page=1 → /catalog/):
RewriteCond %{QUERY_STRING} ^page=1$
RewriteRule ^(.*)$ https://site.ru/$1? [R=301,L]
Правило «убрать все параметры со всех страниц» (RewriteCond %{QUERY_STRING} .+) не используйте: вместе с мусором оно срежет UTM-метки, метки Директа и параметры фильтров — сломается аналитика и половина каталога.
Каждая страница старого домена → такой же адрес нового:
RewriteCond %{HTTP_HOST} ^(www\.)?old-site\.ru$ [NC]
RewriteRule ^(.*)$ https://new-site.ru/$1 [R=301,L]
Условие по домену обязательно, если старый и новый домен смотрят в одну папку на хостинге: без него правило перенаправит и новый домен сам на себя. Если старый сайт лежит отдельно, условие тоже не помешает.
Все страницы старого домена → главная нового:
RewriteCond %{HTTP_HOST} ^(www\.)?old-site\.ru$ [NC]
RewriteRule ^ https://new-site.ru/? [R=301,L]
Так делать стоит, только если на новом сайте нет аналогов старых страниц. Поисковики считают массовый редирект на главную «мягкой 404» и не передают позиции внутренних страниц.
После переезда сообщите о нём поисковикам: в Яндекс Вебмастере — «Индексирование → Переезд сайта», в Google Search Console — «Изменение адреса».
ErrorDocument 404 /404.php
Пишите путь от корня, а не полный адрес. С ErrorDocument 404 https://site.ru/404.php сервер отдаст не код 404, а редирект — и поисковик будет считать несуществующие страницы рабочими.
Страница удалена навсегда и замены нет (код 410):
RewriteRule ^old-promo/?$ - [G]
Перенаправлять удалённые страницы на главную не нужно: поисковики считают это «мягкой 404». Если есть близкая по смыслу страница — ведите на неё, если нет — пусть страница честно отдаёт 404 или 410.
Рабочий шаблон для сайта на CMS: без www, HTTPS, слеш в конце. Любой адрес попадает на конечный за один редирект.
Options -Indexes
ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
RewriteEngine On
# 1. Конкретные страницы (сначала частные правила)
RewriteRule ^old-page/?$ https://site.ru/new-page/ [R=301,L]
# 2. index.php и index.html — на адрес раздела
RewriteCond %{THE_REQUEST} \s/[^?\s]*index\.(php|html?)[?\s] [NC]
RewriteRule ^(.*/)?index\.(php|html?)$ https://site.ru/$1 [R=301,L,NC]
# 3. Слеш в конце
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-z0-9]{1,5}|/)$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1/ [R=301,L]
# 4. www → без www
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
# 5. HTTP → HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
# 6. Правила CMS — всегда в конце
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
У Битрикса свой .htaccess с правилами из коробки. Вносить изменения нужно аккуратно, не ломая встроенную логику.
Где размещать правила. В стандартном файле есть блок <IfModule mod_rewrite.c>. Свои правила добавляйте сразу после строки RewriteEngine On внутри него — выше строк с bitrix/urlrewrite.php.
HTTPS и без www одним редиректом, обмен с 1С не трогаем:
RewriteRule ^bitrix/admin/1c_exchange\.php$ - [L]
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
Первая строка исключает файл обмена с 1С: если 1С обращается к сайту по http, редирект может сорвать выгрузку товаров и заказов.
В интернете часто встречается вариант с флагом [R,L] — это временный редирект 302, а не 301, на любом хостинге. Для переезда на HTTPS нужен [R=301,L].
Редирект конкретной страницы:
RewriteRule ^old-section/old-page/?$ https://site.ru/new-section/new-page/ [R=301,L]
Редирект раздела целиком:
RewriteRule ^old-catalog/(.*)$ https://site.ru/new-catalog/$1 [R=301,L]
Что проверить в админке Битрикса. В настройках сайта (Настройки → Настройки продукта → Сайты → Список сайтов) должен быть указан домен главного зеркала. Ссылки в шаблоне, меню и компонентах должны вести сразу на https-адреса без www — иначе каждый клик по сайту будет проходить через редирект. Редиректы можно вести и в интерфейсе — с помощью модулей из Маркетплейса, — но правила в .htaccess срабатывают раньше, до запуска PHP, и не зависят от обновлений модулей.
<?php
header("Location: https://site.ru/new-page/", true, 301);
exit;
Условный редирект для конкретного адреса:
<?php
if (parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) === '/old-page.php') {
header("Location: https://site.ru/new-page/", true, 301);
exit;
}
Заголовки отправляются до любого вывода на страницу: ни пробела, ни echo до header(). parse_url отрезает параметры, иначе адрес с UTM-меткой не совпадёт.
На сервере только с nginx файл .htaccess не читается — правила пишутся в конфигурации сайта. После правки проверьте синтаксис командой nginx -t и перезагрузите nginx.
HTTP → HTTPS для всех вариантов домена:
server {
listen 80;
server_name site.ru www.site.ru;
return 301 https://site.ru$request_uri;
}
www → без www по HTTPS:
server {
listen 443 ssl;
server_name www.site.ru;
# ssl_certificate и ssl_certificate_key — как у основного домена
return 301 https://site.ru$request_uri;
}
Редирект страницы — внутри основного блока server:
rewrite ^/old-page/?$ https://site.ru/new-page/ permanent;
Отдельные блоки server для зеркал работают быстрее и надёжнее, чем if ($host = …) внутри основного. Код для nginx по вашим настройкам собирает генератор — вкладка «nginx».
| Плагин | Особенности |
|---|---|
| Redirection | Самый популярный: журнал 404, регулярные выражения, статистика переходов |
| Safe Redirect Manager | Лёгкий, поддерживает регулярные выражения |
| Simple 301 Redirects | Простой список «старый → новый», без регулярных выражений |
| Quick Page/Post Redirect | Редирект настраивается прямо в редакторе записи |
Плагины срабатывают только после загрузки WordPress. Для склейки зеркал, HTTPS и массовых правил .htaccess надёжнее и быстрее. Свои правила ставьте выше строки # BEGIN WordPress: блок между BEGIN и END WordPress перезаписывает сам.
Правила ставьте после RewriteBase /, выше правил SEO-адресов OpenCart:
RewriteRule ^old-category/old-page\.html$ https://site.ru/new-page/ [R=301,L]
Встроенный компонент «Перенаправления» (Компоненты → Перенаправления) позволяет добавлять редиректы в интерфейсе и показывает битые ссылки. Через .htaccess правила ставьте после RewriteEngine On, выше раздела «Begin — Joomla! core SEF Section». Например, убрать index.php из адресов:
RewriteCond %{THE_REQUEST} \s/[^?\s]*index\.(php|html?)[?\s] [NC]
RewriteRule ^(.*/)?index\.(php|html?)$ https://site.ru/$1 [R=301,L,NC]
| Директива | Назначение | Пример |
|---|---|---|
RewriteEngine | Включить mod_rewrite. Без On ни одно RewriteRule не работает | RewriteEngine On |
RewriteBase | К чему приписывать относительные адреса в правилах | RewriteBase / |
RewriteCond | Условие для ближайшего RewriteRule ниже | RewriteCond %{HTTPS} off |
RewriteRule | Правило: шаблон, новый адрес, флаги | RewriteRule ^old/?$ /new/ [R=301,L] |
Redirect | Простой редирект (mod_alias), срабатывает на адрес и всё «внутри» него | Redirect 301 /old/ https://site.ru/new/ |
RedirectMatch | Редирект по регулярному выражению (mod_alias), путь — со слешем | RedirectMatch 301 ^/old/(.*)$ https://site.ru/new/$1 |
ErrorDocument | Своя страница ошибки — путь от корня | ErrorDocument 404 /404.php |
| Переменная | Что содержит |
|---|---|
%{HTTP_HOST} | Домен запроса: www.site.ru |
%{REQUEST_URI} | Путь со слешем, без параметров: /page/. После внутренней подмены адреса CMS — уже новый путь |
%{QUERY_STRING} | Только параметры, без «?»: id=1&utm_source=yandex |
%{THE_REQUEST} | Исходная строка запроса: GET /page/?id=1 HTTP/1.1. Не меняется при внутренних подменах |
%{HTTPS} | on или off. За nginx-прокси и CDN всегда off |
%{HTTP:X-Forwarded-Proto} | Протокол, по которому посетитель пришёл к прокси или CDN: https или http. Так же читается любой заголовок: %{HTTP:Имя} |
%{SERVER_PORT} | Порт: 80 или 443. За прокси обычно 80 |
%{REQUEST_FILENAME} | Путь к файлу на диске — для проверок -f и -d |
%{REQUEST_METHOD} | GET, POST… Формы лучше не перенаправлять |
%{HTTP_USER_AGENT} | Браузер или робот: YandexBot, Googlebot |
%{REMOTE_ADDR} | IP посетителя (за прокси — IP прокси) |
%{ENV:REDIRECT_STATUS} | Пусто при первом проходе, 200 — после внутренней подмены. Защита от зацикливания |
| Флаг | Расшифровка | Назначение |
|---|---|---|
R=301 | Redirect | Постоянный редирект — для переездов, склейки, HTTPS |
R=302 / R | Redirect | Временный редирект. Флаг R без кода — тоже 302 |
L | Last | Дальше правила в этом проходе не проверять |
END | End | Остановить всё, включая повторный проход после внутренней подмены |
NC | No Case | Без учёта регистра букв |
QSA | Query String Append | Дописать старые параметры, если в новом адресе есть свои «?…» |
QSD | Query String Discard | Выбросить старые параметры (то же, что «?» в конце адреса) |
NE | No Escape | Не кодировать спецсимволы — для #якорей и готовых %D0%B0 |
F | Forbidden | Ответ 403, адрес пишут «-» |
G | Gone | Ответ 410 — страница удалена навсегда |
S=n | Skip | Пропустить n следующих правил |
PT | Pass Through | Передать адрес дальше другим модулям (Alias и т. п.) |
Флаги пишутся в квадратных скобках через запятую без пробелов: [R=301,L], [R=301,L,NC].
| Флаг | Назначение |
|---|---|
[NC] | Сравнение без учёта регистра |
[OR] | «Или» со следующим условием (по умолчанию условия объединяются через «и») |
[NV] | Не добавлять заголовок Vary в ответ, когда условие проверяет заголовок запроса |
| Символ | Значение | Пример |
|---|---|---|
. | Любой один символ | a.c — abc, aXc |
.* | Любая последовательность символов | .*\.html |
^ | Начало строки | ^page (в RewriteRule — без слеша) |
$ | Конец строки | page/$ |
? | Предыдущий символ 0 или 1 раз | page/? — со слешем и без |
* | 0 или больше раз | a* |
+ | 1 или больше раз | \d+ |
[abc] | Один символ из набора | [0-9], [a-z] |
[^abc] | Любой символ, кроме перечисленных | [^/] — всё, кроме слеша |
(...) | Группа — результат подставляется как $1, $2… | ^blog/(.*)$ |
(?:...) | Группа без запоминания — не сбивает нумерацию | ^(?:www\.)?site\.ru$ |
a|b | Или | (php|html) |
\ | Экранирование спецсимвола | \. — точка, \ — пробел |
\d / \w / \s | Цифра / буква, цифра или _ / пробельный символ | \d{4} — четыре цифры |
{n,m} | От n до m повторов | [A-Z]{3,9} |
| Ссылка | Где используется | Что содержит |
|---|---|---|
$1, $2… | В новом адресе и в условиях | Группы из шаблона RewriteRule |
%1, %2… | В новом адресе и в следующих условиях | Группы из последнего сработавшего RewriteCond |
%{ИМЯ} | Везде | Значение серверной переменной |
Пример с %1 — склейка www без указания домена:
# %1 — домен без www из условия ниже
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Комментарий пишите только на отдельной строке. Строка RewriteCond %{HTTP_HOST} ^www\.(.+)$ # комментарий — ошибка: Apache примет «#» за флаги, и весь сайт отдаст 500.
| Оператор | Назначение |
|---|---|
| (без оператора) | Регулярное выражение |
! | Отрицание: условие выполнено, если НЕ совпадает |
= | Точное равенство строк; ="" — пустая строка |
!= | Не равно |
<, >, <=, >= | Сравнение строк по алфавиту |
-f / !-f | Файл существует / не существует |
-d / !-d | Папка существует / не существует |
-s | Файл существует и не пустой |
-l | Символическая ссылка |
Все директивы, флаги и переменные с примерами и кнопкой «Вставить» — в справочнике песочницы для .htaccess.
| Инструмент | Для чего |
|---|---|
| Проверка .htaccess онлайн | До загрузки на сервер: какая строка сработает для каждого адреса, цепочки, циклы, ошибки 500 |
| Проверка цепочки редиректов | Живой сайт: все шаги и коды ответа так, как их видят роботы Яндекса и Google |
| Проверка HTTP-заголовков | Код ответа, заголовки, кэширование и время отклика страницы |
| Яндекс Вебмастер → Инструменты → Проверка ответа сервера | Как адрес видит робот Яндекса |
| Google Search Console → Проверка URL | Как адрес видит Google |
Команда curl -I -L http://site.ru/page | Цепочка редиректов в терминале |
ERR_TOO_MANY_REDIRECTS — бесконечный редирект. Чаще всего это переход на HTTPS за прокси или CDN без условия X-Forwarded-Proto, или один и тот же редирект включён дважды: в .htaccess и в панели хостинга, CMS или Cloudflare.
302 вместо 301 — в правиле стоит [R,L] или [R] без кода. Всегда пишите [R=301,L].
Редирект не работает совсем — нет строки RewriteEngine On; правило стоит ниже правил CMS; шаблон начинается со слеша (^/old-page$ в .htaccess не сработает); на сервере только nginx, и .htaccess не читается.
Ошибка 500 на всём сайте — опечатка в файле: комментарий в одной строке с правилом без флагов, пробел в шаблоне без \, неизвестный флаг. Песочница покажет строку с ошибкой.
Цепочка редиректов — правила для HTTPS и www стоят отдельно и ведут на промежуточный адрес. Пишите в каждом правиле окончательный адрес (см. раздел 2.4).
Редирект на нерелевантную страницу — поисковик считает это «мягкой 404». Ведите на близкую по смыслу страницу или отдавайте 404/410.
robots.txt — при склейке зеркал и переезде на HTTPS файл перенаправляется вместе с сайтом, это нормально. Ошибка — когда robots.txt с главного зеркала уходит на HTML-страницу или отдаёт 404.
Не обновили внутренние ссылки — после редиректа замените старые адреса в меню, шаблонах, sitemap.xml и рекламе. Редирект — страховка для внешних ссылок и закладок, а не замена правильным ссылкам.
Длинные цепочки — Google проходит до 10 шагов, но каждый шаг замедляет переобход и открытие страницы. Цель — один редирект со старого адреса на конечный.
Любые коммерческие сведения, ставшие известными нашей компании в ходе совместной работы над проектом, признаются конфиденциальными. Мы обязуемся не разглашать их и не предоставлять иным лицам без вашего согласия
Раз в месяц присылаем подборку лучших материалов, практических кейсов и инсайдов интернет-маркетинга. Только самое важное, что поможет расти вашему бизнесу.
Иногда проще спросить, чем искать самому
8 800 101-81-85