Перейти к содержимому
Эльдар Шахвалиев
Обсудить проект
← Все проекты
202604.2026 — 04.2026Сдандоработка legacyдостоверность: medium

homidomi.ru — техническое SEO на 1С-Битрикс (Aspro Lite)

Интернет-магазин товаров для дома / климат- и BBQ-оборудования (1С-Битрикс) · E-commerce (товары для дома, кондиционирование, грили/BBQ, печи для пиццы)

Backend/Bitrix-разработчик (техническое SEO)

  • PHP
  • Bitrix
  • Bitrix D7
  • Aspro Lite
  • MySQL
  • Nginx
  • php-fpm 8.3
  • SEO

Ссылки и доступ — по запросу.

2 / 2
задачи ТЗ выполнены (301-редиректы + canonical)
5
файлов изменено/создано, всё в /local/ (ядро и тема не затронуты)
3 → 1
дублей тега canonical на странице приведено к одному
2
раунд доработок по замечаниям заказчика (v2): HTTPS-редирект + canonical на поддоменах

Контекст и задача

Интернет-магазин homidomi.ru работает на 1С-Битрикс с темой Aspro Lite 2.3.3 (PHP 8.3, nginx + php-fpm напрямую, без Apache в цепочке). На сайте были две SEO-проблемы, портящие индексацию:

  1. Отсутствие 301-редиректов — www.homidomi.ru и /index.php отдавали HTTP 200, создавая дубли страниц.
  2. Сломанная канонизация — тег <link rel="canonical"> на разделах и карточках товаров указывал на https://homidomi.ru/bitrix/urlrewrite.php, причём в трёх экземплярах на каждой странице (при дублях поисковики игнорируют все canonical-теги). Источник: prompt_bitrix_seo_fixes.md, report_summary.md.

Что я сделал

Доработка существующего (legacy) сайта — не разработка с нуля. Объём узкий и сфокусированный: две задачи ТЗ по техническому SEO плюс диагностика и раунд правок по замечаниям. Состав работ (по report_summary.md/report_full.html):

  • Настроил 301-редиректы в local/php_interface/init.php: www → без-www и */index.php → */ для любого пути, с сохранением query-параметров.
  • Переписал формирование canonical в local/classes/EventHandlers/Iblock/Handler.php.
  • Добавил обработчик дедупликации canonical в local/php_interface/event_handlers.php.
  • Создал кастомные копии шаблонов пагинации в /local/ (убрана дублирующая строка canonical).
  • Сделал бэкап изменяемых файлов и SEO-таблиц БД на сервере перед работами; деплой по SSH.
  • Раунд v2 по замечаниям заказчика (report_fixes_v2.html): фиксация протокола редиректа на HTTPS и корректный canonical на региональных поддоменах.

Отдельно — до реализации провёл аудит собственного промпта (audit_prompt_bitrix.md): сверка плана с документацией Bitrix/nginx и SEO-руководствами Google/Yandex, выявление критических ошибок до деплоя.

Решение и подход

  • Редиректы только на PHP-уровне. Сайт обслуживается nginx→php-fpm напрямую, поэтому .htaccess/RewriteRule не работают. Редиректы размещены в начале init.php и используют штатный LocalRedirect() (а не header()+exit), что корректно завершает жизненный цикл Битрикс (закрытие БД/сессий, события). Исключения: /bitrix/, /rest/, /upload/, /local/tools/, CLI, cron-агенты (BX_CRONTAB/CHK_EVENT), AJAX, не-GET — чтобы не сломать обмен с 1С и формы магазина.
  • Корневая причина canonical. Старый код брал $_SERVER['DOCUMENT_URI'], который в данной конфигурации nginx после internal rewrite указывает на скрипт-обработчик /bitrix/urlrewrite.php. Замена на D7 HttpRequest::getRequestedPage() (из оригинального REQUEST_URI) и переход с Asset::addString() на штатный $APPLICATION->SetPageProperty('canonical',.).
  • Дедупликация поверх вендора. Тема Aspro (CLiteEvents, OnEndBufferContent, sort=100) переносит canonical в <head> после каждого вхождения <head> и подменяет домен на $_SERVER['SERVER_NAME']. Добавлен собственный обработчик OnEndBufferContent с sort=500, который оставляет один тег и восстанавливает домен из HTTP_HOST (важно для поддоменов вроде rostov.homidomi.ru, т.к. server_name homidomi.ru *.homidomi.ru всегда отдаёт основной домен в SERVER_NAME).
  • Без правок вендора. Все изменения только в /local/; ядро Битрикс, тема Aspro и модуль SmartSEO не модифицировались — устойчивость к обновлениям.

Результат

Подтверждено в отчётах автора (report_summary.md, report_full.html, report_fixes_v2.html):

  • Обе задачи ТЗ выполнены; редиректы и canonical приведены к ожидаемому поведению (таблицы «до/после» в отчётах).
  • Canonical: с трёх дублей и неверного /bitrix/urlrewrite.php — к ровно одному корректному URL раздела/товара; на пагинации — URL основного раздела (по требованию ТЗ).
  • v2: http://www.*https://homidomi.ru (301); canonical на поддоменах указывает на собственный поддомен.
  • Изменения изолированы в /local/, ядро и тема не затронуты; бэкап (включая дамп SEO-таблиц ~10.6 МБ) сохранён на сервере.

Бизнес-эффект (трафик/индексация/позиции до–после) не зафиксирован (уточнить у автора) — в артефактах только технический результат и проверки curl.

Стек и обоснование

PHP 8.3 + 1С-Битрикс (D7 API) — платформа сайта; правки в /local/ по гайдлайнам Битрикс. Aspro Lite 2.3.3 — установленная тема, поведение которой (CLiteEvents) пришлось учитывать и перекрывать, не трогая вендорские файлы. nginx + php-fpm — конфигурация хостинга (ISPManager), определившая выбор PHP-редиректов вместо .htaccess. MySQL — БД магазина (бэкап SEO-таблиц). Инструменты SEO-канонизации Google/Yandex — основание для решений по canonical и пагинации.

Роль ИИ в проекте

Проект — характерный пример AI-augmented рабочего процесса по схеме research → audit → implement:

  • prompt_bitrix_seo_fixes.md — детальный исполнительный промпт (по тексту файла — «для Claude Opus 4.6, max effort») с полным контекстом стека, жизненного цикла Битрикс, требований и шагов проверки (doc-driven dev).
  • audit_prompt_bitrix.md — отдельный аудит этого промпта перед исполнением: сверка с документацией dev.1c-bitrix.ru, Aspro, nginx, SEO-руководствами Google/Yandex и сообществами; найдены критические ошибки (нативные header()+exit вместо LocalRedirect(), неполные исключения редиректа, риск www в canonical, узкая регулярка index.php) и внесены в финальный промпт. Это адверсариальная проверка плана ИИ до деплоя.
  • HTML-отчёты (report_full.html, report_fixes_v2.html) — оформленные клиентские отчёты с таблицами «до/после», диаграммами цепочки обработки и чек-листами, сгенерированные в рамках того же процесса. Артефактов CLAUDE.md/AGENTS.md/.claude/субагентов в папке нет; ИИ-слой представлен именно парой «промпт + аудит промпта» и отчётами.

Инженерные вызовы

  • Конфигурация nginx→php-fpm, ломающая привычные механики (.htaccess неактивен; DOCUMENT_URI искажён после rewrite) — потребовала переноса логики в init.php и перехода на REQUEST_URI/D7 API.
  • Перекрытие поведения вендорской темы без правки её файлов: собственный OnEndBufferContent с более высоким приоритетом, чтобы починить дубли и домен после CLiteEvents.
  • Мультидоменность (региональные поддомены *.homidomi.ru) и SERVER_NAME, всегда отдающий основной домен, — решено восстановлением домена из HTTP_HOST.
  • Безопасность редиректов для e-commerce: аккуратный whitelist исключений, чтобы не задеть обмен с 1С, REST, AJAX, cron и POST-формы.
  • доработка legacy
  • аудит
  • SEO
  • деплой
  • консультация