Налаштування 301-редиректів для Bitrix CMS
301-редирект повідомляє пошуковій системі: "Сторінка переїхала назавжди, перенеси весь вес посилань на новий URL". Без нього при змінені структури URL або домену накопичені позиції втрачаються. У Bitrix редиректи можна налаштувати на кількох рівнях — вибір залежить від задачі.
Модуль "Управління сайтом" — редиректи
Вбудований інструмент: Параметри → Параметри продукту → URL-адреси. Налаштовує редирект з http на https та з www на без www (або навпаки). Це найкритичніші редиректи — дублювання протоколу та поддомена. Bitrix робить це через CMain::Redirect() у прологу.
Модуль SEO — управління редиректами
Шлях: Маркетинг → Пошукова оптимізація → Редиректи. Дозволяє додавати правила перенаправлення з шаблонами. Підтримує регулярні вирази.
Приклад: при змінені структури каталогу потрібно перенаправити /old-catalog/product-123/ на /catalog/category/product-123/. Додаємо правило:
| Поле | Значення |
|---|---|
| Джерело (регулярний вираз) | ^/old-catalog/(.+)/$ |
| Призначення | /catalog/category/$1/ |
| Тип | 301 |
Правила перевіряються за пріоритетом. При великій кількості правил (100+) увімкніть кеш правил у параметрах модуля.
Редиректи через .htaccess (Apache)
Для масових редиректів або коли потрібна максимальна продуктивність (редирект відбувається на рівні веб-сервера, до виконання PHP):
# Редирект старого розділу на новий
Redirect 301 /old-section/ /new-section/
# Regex-редирект
RewriteRule ^old-catalog/(.*)$ /catalog/$1 [R=301,L]
Файл .htaccess знаходиться у корені сайта. Зміни застосовуються негайно без перезавантаження Apache.
Редиректи через nginx
Для проектів з nginx редиректи ефективніше виносити в конфіг сервера, а не у .htaccess:
# У блоці server {}
location ~ ^/old-catalog/(.+)$ {
return 301 /catalog/$1;
}
# Масові редиректи через map
map $request_uri $new_uri {
/old-page-1/ /new-page-1/;
/old-page-2/ /new-page-2/;
default '';
}
if ($new_uri) {
return 301 $new_uri;
}
Конфіг nginx застосовується після nginx -s reload. Для управління редиректами з адміністративної панелі Bitrix конфіг nginx не підходить — він вимагає доступу до сервера.
Типова задача: зміна ЧПУ у інфоблоку
При змінені шаблону URL елементів інфоблоку старі URL перестають працювати. Потрібно додати правила редиректів за маскою. Якщо старий URL містив ID (/catalog/element-123.html), а новий — символьний код (/catalog/element-code/), для кожного елемента створюється окремий запис у модулі SEO.
Масове додавання редиректів при змінені ЧПУ роблиться скриптом:
$res = \CIBlockElement::GetList([], ['IBLOCK_ID' => 5], false, false, ['ID', 'CODE']);
while ($el = $res->Fetch()) {
\CURLRewrite::Add([
'SITE_ID' => 's1',
'SORT' => 100,
'CONDITION'=> '^/catalog/element-' . $el['ID'] . '\.html$',
'RULE' => '/catalog/' . $el['CODE'] . '/',
'TYPE' => '301',
]);
}
CURLRewrite — клас модуля main для програмного управління правилами редиректів, які зберігаються у таблиці b_url_rewrite.
Терміни виконання
Налаштування базових редиректів (http→https, www) — 30 хвилин. Розробка та застосування масових редиректів при змінені структури URL — 2–4 години.







