Перейти к содержимому

Кейс · Сайт + SEO

Сайт, которого для Google не существовало.

Йога-центр «Практика» — мобильная версия

Сняли центр йоги с заражённого Bitrix и пересобрали сайт на Django с серверным рендерингом. Встроили свою систему записи и вывели 116 страниц из-под noindex — в поиск и в ответы ИИ.

Чебоксары · два зала · 24 направления · 18 инструкторов · 4000+ клиентов за 20 лет.

Йога-центр «Практика» — десктоп

Хотите похожий проект?

Пройдите короткий брифинг — вернёмся с планом и сметой.

Коротко: Двадцать лет работы, два зала, 24 направления, 18 инструкторов и больше четырёх тысяч клиентов. И сайт, которого поисковики не видели: старая сборка Bitrix была заражена вредоносным кодом и вдобавок отдавала в каждом ответе директиву noindex. Сколько бы контента там ни лежало, для Google и Яндекса центра просто не было. Мы пересобрали проект с нуля на Django, встроили собственную систему записи и открыли для индексации 116 страниц.

Клиент: центр йоги «Практика», Чебоксары · Категория: сайт + SEO

Что главное в проекте?

  • Было 0 страниц в индексе, стало 116. Весь сайт стоял под noindex, для поиска он не существовал.
  • Заражённый Bitrix заменён чистым Django без единой строки унаследованного кода.
  • Своя система записи с админ-календарём и часовой синхронизацией расписания из Яндекс.Календаря.
  • 1132 вопроса FAQ с разметкой на 110 страницах: столько живого текста центр накопил за двадцать лет.
  • HTML 26 КБ, ответ за 0,4 секунды, gzip и HTTPS.
  • Все старые адреса сохранены, включая .php: переходы по ссылкам из старых постов не теряются.

На чём собран проект?

Бэкенд:
Python, Django 5.2 с серверным рендерингом, Phusion Passenger.
База данных:
MySQL 8, миграция с унаследованной 5.7. На shared-хостинге стандартный драйвер не собирается, поэтому подключён чистый PyMySQL.
Инфраструктура:
nginx, Apache, Passenger, HTTPS через Let's Encrypt, gzip, принудительный редирект на HTTPS.
Система записи:
собственное Django-приложение, админка работает как интерфейс сотрудника.
Интеграции:
импорт расписания из Яндекс.Календаря по iCal, Яндекс.Метрика, cron.
SEO и GEO:
JSON-LD @graph, sitemap.xml, robots.txt, llms.txt и llms-full.txt.

Серверный рендеринг выбран не ради моды. HTML отдаётся готовым, поэтому и поисковые роботы, и ИИ-краулеры, которые почти не исполняют JavaScript, видят весь контент и микроразметку сразу.

С чего всё началось?

Центр пришёл с жалобой, которую слышно часто: «сайт есть, а клиентов с него нет». Обычно за этим стоит слабый текст или медленная загрузка. Здесь причина была другой и куда неприятнее.

Во-первых, движок был заражён. Старая сборка Bitrix годами не обновлялась, и в коде жил вредонос. Во-вторых, весь сайт отдавал в заголовке директиву noindex, nofollow. То есть он честно работал, показывал расписание и цены, но для поисковых систем не существовал вовсе.

Лечить такое бессмысленно: те же дыры вернут ту же проблему. Проект пересобрали целиком, контент вынесли в единый реестр, а старый сайт сняли с обслуживания без простоя действующего домена.

Что реализовано?

🌐 Что есть на сайте?

  • 116 страниц: главная, каталог из 24 направлений, 18 личных страниц инструкторов, услуги, цены, контакты, блог
  • Расписание на три недели вперёд с прокруткой по дням и мобильным адаптивом
  • Блог из 50 статей о йоге под поисковые и информационные запросы
  • Блок «Ближайшие практики» на главной, живой, из того же источника, что и расписание
  • Единый реестр контента: страницы, направления, инструкторы, тексты, ключи и мета правятся в одном месте, дубли невозможны по конструкции

🗓 Как работает система записи?

  • Календарь занятий как главный экран админки, занятие создаётся кликом
  • Залы с вместимостью, инструкторы, карточки направлений, контроль лимита мест без гонок
  • Импорт расписания из Яндекс.Календаря по обоим филиалам, автоматически раз в час
  • Разделение состояний «календарь не загрузился» и «занятий нет»: человек видит корректный статус, а не пугающую ошибку

🔍 Что сделано в техническом SEO и микроразметке?

  • Индивидуальные title от 30 до 60 знаков и description от 120 до 160 на всех 116 страницах, ноль дублей
  • Canonical, корректная индексация, Open Graph и Twitter Card на каждой странице
  • JSON-LD @graph: Organization, два филиала как LocalBusiness с адресами и часами, WebSite, WebPage, Service для направлений, Person для инструкторов, FAQPage, BreadcrumbList, Article
  • Семантические хлебные крошки на 115 страницах, связанные со схемой
  • FAQ-блоки: 1132 вопроса на 110 страницах, разметка строится из того же текста, что видит человек
  • Карта сайта, robots.txt, llms.txt и llms-full.txt как карта контента для ИИ-поисковиков

🖼 Как решены соцсети и доступность?

  • 116 карточек 1200×630 для репостов: фото плюс фирменная плашка с логотипом, генерируются скриптом
  • Подписи полям форм, доступные имена ссылкам-иконкам и кнопкам, корректная разметка декоративных изображений

🚚 Как прошли миграция и запуск?

  • Заражённый Bitrix и его базы удалены, старый сайт снят с обслуживания без простоя домена
  • Все прежние адреса сохранены, включая .php
  • Прошли сайт по семи этапам: индексация, мета, микроразметка, крошки, схема страниц, доступность, контент
  • Проверяли живой сайт по всем 116 страницам до двух чистых прогонов подряд
  • Сняли noindex, открыли сайт для поисковиков, подготовили карту для Вебмастера и Search Console

Какой результат?

ПоказательБылоСтало
Страниц, открытых для индексации0, весь сайт под noindex116
Движокзаражённый BitrixDjango 5.2, чистый код
Индивидуальные title и descriptionнет116 из 116, 0 дублей
Микроразметка Schema.orgотсутствует8+ типов сущностей, связный @graph
FAQ с разметкойнет1132 вопроса на 110 страницах
Карточки для соцсетейлоготип-заглушка116 карточек 1200×630
Система записинетадмин-календарь и часовая синхронизация
Технический аудит—0 критичных находок на 116 страницах

Не знаете, с чего начать?

Разберём вашу задачу на бесплатной консультации и предложим решение.

Подробнее об этом кейсе

Полная история этого проекта — как одна строка кода четыре года прятала 20-летний бизнес от Google, и что мы с этим сделали.

Разбор на LinkedIn

Смежный технический разбор: как впустить нужных ИИ-краулеров и отсечь скраперов — подпись Web Bot Auth, проверка по IP и почему нужно и то, и другое.

Читать статью

Сколько это стоит по прайсу?

17 позицийСрок: ~1 месяц
По прайсу, по отдельности€2300
Выгода пакета−€1200
Пакетом под ключ€1100

Цены — по нашему прайсу. Каждый модуль по отдельности дороже: свои интеграции, менеджмент, оверхед. Единым проектом на одном бэкенде — выгоднее. Точную смету под вашу задачу дадим после брифинга.

Чем больше функций — тем выгоднее пакет

По отдельностиЦена пакетом
Минимум · €390Стандарт · €1490€2300−€1200Этот проект€1100Объём функционала →17Стоимость, €

Поштучно стоимость растёт линейно. В пакете — выходит на плато: общая архитектура, один бэкенд, переиспользование кода. Поэтому чем больше функций, тем шире разрыв — и тем больше ваша выгода. Этот проект (41 функция) уже у плато.

«Чаще всего вижу одно: мысль размазана по странице. Ответ есть, но собирается из четырёх абзацев сверху донизу. Человек дочитает и соберёт. Модель берёт первую треть и уходит.»

Evgenii Slepinin, founder of SEO7, systems architect

Частые вопросы

Зачем менять Bitrix на Django?

Старый Bitrix был заражён вредоносным кодом и полностью закрыт от индексации. Django дал чистую управляемую платформу с серверным рендерингом и собственной системой записи.

Сайт долго был недоступен во время переезда?

Нет. Новый сайт поднимали параллельно, домен переключили без простоя, все старые адреса сохранены.

Что было не так со старым сайтом?

Он стоял на устаревшей заражённой Bitrix-сборке и отдавал в `<head>` директиву `noindex, nofollow` — для поисковиков сайта попросту не существовало.

Старые ссылки (в т.ч. .php) перестанут работать?

Нет. Все прежние адреса, включая `.php`, сохранены с редиректами — переходы по старым ссылкам не теряются.

Что такое серверный рендеринг и зачем он для SEO и ИИ-поиска?

HTML отдаётся браузеру готовым, а не собирается скриптами. Поисковые роботы и ИИ-краулеры, которые почти не исполняют JavaScript, сразу видят весь контент и микроразметку.

Как устроена система записи?

Это собственное Django-приложение: админ-календарь занятий, залы с вместимостью, инструкторы и контроль лимита мест без гонок. Занятие создаётся кликом.

Откуда берётся расписание на сайте?

Импортируется из Яндекс.Календаря по обоим филиалам автоматически раз в час. Если календарь не загрузился, пользователь видит корректный статус, а не ошибку.

Что за 1132 вопроса FAQ и зачем?

FAQ-блоки на 110 страницах с разметкой FAQPage. Она строится из того же текста, что видит пользователь, и повышает шанс попасть в ответные блоки и ИИ-поиск.

Почему получилось 116 страниц?

Все страницы строятся из единого контент-реестра: главная, 24 направления, 18 инструкторов, услуги, цены, контакты и блог из 50 статей. Дубли невозможны по конструкции.

Готов ли сайт к ИИ-поиску (ChatGPT, Яндекс.Нейро)?

Да. Серверный рендеринг, микроразметка Schema.org и карта llms.txt / llms-full.txt дают ИИ-краулерам понятную структуру контента. Это техническая база, а не гарантия попадания в ответы.

Кто теперь управляет контентом?

Центр — через админку Django. Страницы, направления, инструкторы, тексты и мета правятся централизованно в одном реестре.

Что с безопасностью после заражения?

Заражённый Bitrix и его базы удалены без единой строки унаследованного кода. Новый сайт работает по HTTPS с редиректом HTTP→HTTPS.

Что даёт микроразметка Schema.org?

Связный JSON-LD @graph из 8+ типов (Organization, два филиала как LocalBusiness, Service, Person, FAQPage, BreadcrumbList, Article) помогает поисковикам и ИИ понимать, что за бизнес и страницы перед ними.

Что дальше после запуска?

Сняли `noindex`, открыли сайт поисковикам и подготовили карту сайта для отправки в Вебмастер и Search Console. Дальше — накопление индексации и данных.

Похожие проекты.

Готовы к своему проекту?

Оставьте заявку — посчитаем сроки и стоимость под ваш бизнес.