homidomi.ru — техническое SEO на 1С-Битрикс (Aspro Lite)
Интернет-магазин товаров для дома / климат- и BBQ-оборудования (1С-Битрикс) · E-commerce (товары для дома, кондиционирование, грили/BBQ, печи для пиццы)
- PHP
- Bitrix
- Bitrix D7
- Aspro Lite
- MySQL
- Nginx
- php-fpm 8.3
- SEO
- 2 / 2
- 5
- 3 → 1
- 2
Контекст и задача
Интернет-магазин homidomi.ru работает на 1С-Битрикс с темой Aspro Lite 2.3.3 (PHP 8.3, nginx + php-fpm напрямую, без Apache в цепочке). На сайте были две SEO-проблемы, портящие индексацию:
- Отсутствие 301-редиректов —
www.homidomi.ruи/index.phpотдавали HTTP 200, создавая дубли страниц. - Сломанная канонизация — тег
<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. Замена на D7HttpRequest::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
- деплой
- консультация