01 / 03 cover-1-audit.png
Экран 1 из 3 Экран 2 из 3 Экран 3 из 3

AI-SEO аудит и подготовка перехода на PHP 8.3 для сайта на MODX Evolution

Технический аудит · MODX Evolution · PHP · AI-поиск

Аудит сайта мастерской памятников на MODX Evolution: исправление технического SEO, подготовка структурированных данных и проверка перехода на PHP 8.3. Работа велась на копии сайта, а обновление CMS проверялось на отдельном стенде.

Задача и условия работы

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

Клиент предоставил файлы и дамп базы данных. Основной аудит и правки выполнялись офлайн. Для проверки HTTP-заголовков, кодов ответа и доступности рабочего сайта подготовили отдельный CLI-скрипт для запуска клиентом.

Техническое SEO

Robots.txt, llms.txt, JSON-LD, canonical, sitemap и сжатие ответов.

Обновление окружения

Проверка кода под PHP 8.3 и перенос копии сайта с Evolution 1.4.17 на Evolution 3.5.7.

Что доработали в коде и конфигурации

Robots.txt

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

Llms.txt

Подготовили описание компании и навигацию по каталогу и статьям. Ссылки собрали из базы CMS, используя адреса существующих страниц.

Schema.org / JSON-LD

Написали сниппет для генерации Organization, WebSite и BreadcrumbList, а на карточках — Product и Offer. Данные берутся из полей, используемых на самих страницах.

FAQPage формируется только при заполненном поле вопросов и ответов. Обработка ошибок в сниппете позволяет не прерывать вывод страницы при сбое разметки.

Сжатие ответа

Добавили конфигурацию Gzip/Deflate для HTML, CSS, JavaScript, SVG и шрифтов. Проверка фактических HTTP-ответов выделена в сетевой этап аудита.

Что обнаружила повторная проверка

Перед передачей изменений повторно проверили сборку адресов, разметку и правила обхода. Этот этап выявил ошибки как в существующих шаблонах, так и в первой версии новых правок.

Лишний слэш в canonical

Формула в head-чанке добавляла слэш к уже сформированной ссылке. Исправление подготовили для исходного чанка CMS, чтобы оно сохранялось после пересборки кэша.

Повтор домена в JSON-LD

Базовый адрес добавлялся к результату функции, которая уже возвращала полный URL. Исправили сборку ссылок в BreadcrumbList, Product и Offer.

Конфликт групп robots.txt

В первой версии отдельные группы ботов не содержали общих ограничений. Конфигурацию упростили, чтобы запреты для служебных разделов оставались в применяемом наборе правил.

Дубли в sitemap

В карте было 394 записи и 381 уникальный адрес. Шесть URL повторялись от двух до пяти раз. Возможные конфликты документов и alias вынесли в отдельную задачу для проверки в CMS.

Удаление повторов из выгрузки само по себе не решает возможный конфликт документов. Поэтому причину дублей не стали маскировать изменением генератора sitemap.

Что оставили на согласование

На странице контактов видимые телефон и e-mail отличались от значений в ссылках. Актуальные данные должен был подтвердить владелец. До этого подготовленная правка контактов не применялась.

Вопросы и ответы от имени компании также не придумывали: механизм FAQPage подготовили, а его заполнение оставили для реального контента.

Проверка кода под PHP 8.3

Исходная копия работала на Evolution 1.4.17 и PHP 7.2.34. Для проверки обновления использовали второй контур с Evolution 3.5.7 и PHP 8.3. Эти версии относятся к описанному этапу проекта.

947проверенных PHP-файлов
21файл с ошибками синтаксиса
18из них — импорт Excel
2отдельных стенда

Основная группа ошибок находилась в модуле импорта на PHPExcel. Ещё два файла относились к старому обработчику изображений, один — к ядру CMS, заменяемому при обновлении.

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

Как проверяли перенос CMS

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

Что удалось проверить

Проверенные типы страниц на новом стенде возвращали HTTP 200 без фатальных ошибок и предупреждений PHP 8.3 в выводе. Доработки JSON-LD, FAQ-блока и ленивой загрузки изображений сохранились после переноса.

Что осталось нерешённым

Генератор внутренних ссылок выдавал числовые ID вместо человекочитаемых путей. При этом прямые адреса открывались. В собранном кэше отсутствовала карта alias → id.

Следующим шагом была пересборка через административную панель CMS и дальнейшая диагностика при сохранении ошибки. Поэтому результат описан как проверка миграции на стенде, а не как завершённый перенос рабочего сайта.

Результат работы

  • Подготовлены изменения robots.txt, llms.txt, JSON-LD, canonical и конфигурации сжатия.
  • Выявлены дубли sitemap и расхождения в контактных данных.
  • Передан инструмент для сетевой проверки рабочего сайта.
  • Проверен синтаксис 947 файлов под PHP 8.3.
  • Поднят стенд новой CMS и зафиксирована проблема генерации ссылок.

Отдельно оставались действия на рабочем окружении: применение SQL-миграции, настройка WAF и регистрация в Bing Webmaster Tools. Результат аудита — конкретные правки и перечень следующих шагов с обозначенными ограничениями проверки.

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

Был ли рабочий сайт полностью переведён на PHP 8.3?

В статье описана проверка перехода на отдельном стенде. Проверенные страницы работали, но генерация внутренних ссылок оставалась открытым вопросом. Завершённый перенос рабочего сайта здесь не заявлен.

Что входило в техническую подготовку к AI-поиску?

Правки robots.txt, подготовка llms.txt, генерация JSON-LD из данных CMS, исправление canonical и проверка sitemap. Это работа с кодом и представлением информации на сайте; рост упоминаний в AI-ответах в этом аудите не измерялся.

Зачем проверять плагины отдельно от ядра CMS?

Пользовательские компоненты могут содержать несовместимый код. В этом проекте 18 из 21 файла с синтаксическими ошибками относились к модулю импорта Excel, ещё два — к обработчику изображений.

Что подтверждает синтаксическая проверка 947 файлов?

Она показывает, какие файлы не проходят разбор синтаксиса в выбранной версии PHP. Для проверки реальной работы сайта дополнительно нужны запуск приложения и проверка пользовательских сценариев.

Почему контакты и содержимое FAQ не исправили сразу?

Видимые контакты расходились со значениями ссылок, поэтому требовалось подтверждение владельца. Содержание FAQ не придумывали: подготовили условную генерацию разметки из заполненных данных CMS.

Когда нужна отдельная работа по безопасности и восстановлению?

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