Разработка модуля управления редиректами 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка модуля управления редиректами 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка модуля управления редиректами 1С-Битрикс

После переезда каталога на новую структуру URL поисковик начинает фиксировать тысячи 404-ошибок. Старые URL были вида /catalog/product-123.html, новые — /catalog/category/product-name/. Прописать 8 000 редиректов в .htaccess — технически работает, но Apache/Nginx перестают справляться с парсингом файла при больших объёмах, а редактирование в любом текстовом редакторе превращается в кошмар. Модуль управления редиректами решает задачу через БД с удобным интерфейсом.

Почему не .htaccess при большом объёме

Apache начинает заметно тормозить при количестве правил RewriteRule в .htaccess свыше 500–1000: файл парсируется заново для каждого запроса, если не настроено кеширование (директива AllowOverride). Nginx читает конфигурацию единожды при запуске — но перезапуск Nginx при добавлении каждого нового редиректа неприемлем в production.

Хранение правил в БД с обработкой на уровне PHP — компромиссное решение: чуть медленнее аппаратного Nginx-редиректа, но позволяет управлять правилами в реальном времени без рестарта сервисов и содержит весь инструментарий: история изменений, статистика срабатываний, импорт/экспорт.

Архитектура модуля

Таблица правил:

CREATE TABLE myvendor_redirect (
    id          SERIAL PRIMARY KEY,
    source      VARCHAR(500) NOT NULL,      -- /old/path/ или regex
    destination VARCHAR(500) NOT NULL,
    code        SMALLINT NOT NULL DEFAULT 301,
    is_regex    BOOLEAN DEFAULT false,
    priority    INT DEFAULT 100,
    hits        INT DEFAULT 0,
    active      BOOLEAN DEFAULT true,
    created_at  TIMESTAMP DEFAULT NOW(),
    created_by  INT
);

CREATE UNIQUE INDEX idx_redirect_source ON myvendor_redirect(source) WHERE NOT is_regex;
CREATE INDEX idx_redirect_active ON myvendor_redirect(active, priority);

Обработчик. Правила загружаются в обработчик события OnPageStart. Статические правила (точное совпадение URL) проверяются первыми через isset по ассоциативному массиву — O(1). Регулярные выражения проверяются только если статического совпадения нет — итерация по отсортированному по priority массиву.

AddEventHandler('main', 'OnPageStart', [\MyVendor\Redirect\Handler::class, 'handle']);

Кеширование правил. Весь список правил кешируется в Bitrix\Main\Data\Cache с тегом myvendor_redirect. При изменении любого правила кеш сбрасывается. TTL кеша — 1 час как защита от забытого сброса.

Детально: импорт из .htaccess и CSV

После миграции у клиента обычно есть либо старый .htaccess, либо Excel со старыми и новыми URL. Модуль включает парсер обоих форматов.

Парсер .htaccess:

// Пример строки: RewriteRule ^old/(.*)$ /new/$1 [R=301,L]
preg_match('/^RewriteRule\s+\^([^\$]+)\$?\s+(\S+)\s+\[([^\]]+)\]/', $line, $m);

Модуль извлекает source, destination, код редиректа и флаг регулярного выражения. Правила со сложными условиями (RewriteCond) импортируются с предупреждением — их нужно проверить вручную.

Импорт CSV. Формат: old_url;new_url;code. Перед импортом — валидация: дубли источников, проверка на циклические редиректы (A → B → A), проверка доступности destination-URL (опционально, через HEAD-запрос).

Обнаружение 404-ошибок

Модуль логирует 404-ответы в таблицу myvendor_redirect_404. В административном интерфейсе — список самых частых 404-адресов с количеством обращений, кнопкой «Создать редирект» прямо из этого списка. Это главный инструмент для работы с миграцией: видишь самые популярные несуществующие URL и создаёшь редиректы в один клик.

Статистика и аналитика

Каждое срабатывание правила увеличивает счётчик hits. В интерфейсе — сортировка правил по количеству срабатываний, выявление «мёртвых» правил (нет срабатываний за 90 дней — кандидаты на удаление).

Сроки разработки

Масштаб Состав Срок
Базовый Таблица правил + обработчик + интерфейс 1,5–2 недели
Средний + regex + импорт CSV/.htaccess + 404-лог 3–4 недели
Расширенный + валидация циклов + статистика + CDN-интеграция 5–6 недель

Если на проекте Nginx с возможностью динамической конфигурации (например, через Nginx Plus или OpenResty с lua), стоит рассмотреть хранение правил в Redis с Nginx-чтением — это даст редиректы без PHP-обработки.