17.05.2025

MODX: поисковая оптимизация (SEO)

Удаление дублей страниц, настройка редиректов, оптимизация под поисковые системы.
MODX: поисковая оптимизация (SEO)

Поисковая оптимизация сайта (SEO) на платформе MODX Revolution.

Инструкция подходит для MODX Revolution 2 и 3 версий.

Для наглядности в качестве примера в статье используется домен abv123.ru.

1

Редирект с www на без www и обратно

Поисковые системы индексируют домены abv123.ru и www.abv123.ru как два разных сайта с одинаковым содержимым. Чтобы избежать данной ошибки, необходимо настроить переадресацию.

Для этого в корневой директории сайта /www/abv123.ru/docs/ найдите файл ht.access и переименуйте его в .htaccess

В MODX htaccess файле уже содержатся необходимые инструкции, достаточно только раскомментировать нужные строки (убрать #):

С www на без www:

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Получим https://abv123.ru

Без www на www:

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*)$ https://www.%1/$1 [R=301,L] .

Получим https://www.abv123.ru

2

Редирект с http на https

Для перехода сайа на безопасное соединение (https) необходимо выпустить ssl сертификат. Как это сделать описано в статье Подключение и настройка хостинга в шаге 7.

Откройте файл /www/abv123.ru/docs/.htaccess и раскомментируйте строки:

RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} !^443
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Проверьте корректность срабатывания редиректа в сервисе Яндекса: Проверка ответа сервера.

В поле опрашиваемый URL введите запросы вида:

abv123.ru
www.abv123.ru
https://abv123.ru
https://www.abv123.ru

Если все сделано правильно, при любом из 4 запросов будет срабатывать перенаправление на основной URL. На скриншоте ниже это https://abv123.ru/.

Проверка работы редиректа
3

Дружественные URL

Установите расширение "translit" для транслитерации псевдонимов.

Для этого перейдите во вкладку Пакеты – Установщик – Загрузить пакеты. В строке поиска введите "translit" – Загрузить – Вернуться в менеджер пакетов – Установить.

Откройте Системные настройки & События и внесите следующие изменения:

Системные настройки и события в MODX Раздел: Дружественные URL
  1. Суффикс контейнера - сделайте значение пустым.
  2. Метод фильтрации символов в псевдонимах - alphanumeric.
  3. Транслитерация псевдонимов - russian.
  4. Использовать дружественные URL - Да.
  5. Строгий режим дружественных URL - Да.
  6. Проверять на дублирование URI во всех контекстах - Да.
  7. Использовать вложенные URL - Да.
Раздел: Сайт.
  1. Схема URL - abs
Раздел: Шлюз.
  1. Строгий метод запроса - Да
Настройка url в MODX

Для того чтобы внутренние страницы сайта открывались без слеша на конце, добавьте в начале файл .htaccess строку RewriteRule ^(.*)\/$ $1 [R=301,L]. В итоге получится так:

RewriteEngine On
RewriteRule ^(.*)\/$ $1 [R=301,L]
RewriteBase /

Если панель управления сайтом будет уходить в бесконечный редирект, переименуйте файл ht.access в .htaccess в папке /manager. В файле .htaccess сработает правило RewriteEngine Off.

4

Создание канонических ссылок

Подскажем поисковому работу какую страницу считать предпочтительной для показа в результатах поиска. Для этого настроим вывод атрибута rel="canonical".

Создайте сниппет Canonical со следующим содержимым:

 Создание канонических ссылок в MODX
$resourceId = $modx->resource->get('id');
if (!$resourceId) { return ''; }
/** @var string|array $args */
$args = '';
if (!empty($scriptProperties['args'])) {
  $args = $scriptProperties['args'];
  if (strpos(ltrim($args), '{') === 0) {
    $args = $modx->fromJSON($args);
    $args = (is_array($args)) ? $args : '';
    foreach ($args as $k => $v) {
      if (is_string($k) && !trim($k) && is_string($v) && !trim($v)) {
        unset($args[$k]);
      }
    }
  }
}
$canonicalUrl = $modx->makeUrl($resourceId, '', $args, 'full');
return '';

Добавьте на все страницы тег [[Canonical]] внутри тега head.

5

Карта сайта (Sitemap)

Для создания карты сайта понадобится модуль pdoTools. После его установки создайте новый документ:

  • Заголовок: sitemap.
  • Псевдоним: sitemap.
  • Шаблон: пустой шаблон.
  • Тип содержимого: XML.
  • Включите чек-боксы: Скрыть из меню, Опубликован, Кэшируемый, Очистить кэш.
  • Содержимое:
    [[pdoSitemap?
      &showHidden=`1`
    ]]
    

Параметр &showHidden=`1` скроет из карты сайта неопубликованные ресурсы.

Создание карты сайта

Проверьте файл Sitemap с помощью инструмента Анализ файлов Sitemap.

6

Robots.txt

Создайте новый документ и заполните по аналогии с предыдущим.

  • Заголовок: robots.
  • Псевдоним: robots.
  • Шаблон: пустой шаблон.
  • Тип содержимого: text.
  • Включите чек-боксы: Скрыть из меню, Опубликован, Кэшируемый, Очистить кэш.
  • Содержимое:
User-agent: *
Disallow: /index.php
Disallow: /index.html
Disallow: *?
Disallow: /?
Disallow: /*?*
Disallow: /*.html
Disallow: /*utm_source
Sitemap: https://abv123.ru/sitemap.xml

Проверьте корректность индексирования страниц вашего сайта через инструмент Анализ robots.txt.

7

Страницы 404, 405, 503

Создайте документ:

  • Заголовок: Страница не найдена – 404.
  • Псевдоним: 404.

По аналогии создайте еще 2 документа для страниц 401 и 503.

Перейдите в Системные настройки.

Раздел: Сайт

Укажите id страниц для ресурсов:
Страница ошибки 404 «Документ не найден»
Страница ошибки 401 «Доступ запрещен»
Страница ошибки 503 «Сайт недоступен».

Создание страниц 401, 404, 503 в MODX
Комментарии:
  1. Владимир 29 мая 2025, 16:30 #
    Сделал все как в инструкции. При открытии админки происходит бесконечная переадресация. Если убрать правило, которое убирает слеш в конце ссылки, то админка работает.
    1. Поляков Сергей 29 мая 2025, 16:42 #
      Вероятно конфликтуют правила переадресаций в файлах .htaccess и те что настроены на вашем хостинге. Универсальное решение — отключите редиректы для панели управления. Для этого достаточно переименовать файл ht.access в .htaccess в папке /manager.
      1. Владимир 29 мая 2025, 16:59 #
        Заработало. Спасибо!
    2. Malse 01 июня 2025, 22:25 #
      В карте сайта выводятся все страницы, включая технические и тестовые. Это как-то можно убрать?
      1. Поляков Сергей 01 июня 2025, 22:31 #
        Добавьте к Sitemap параметр showHidden=1, чтобы не публиковать скрытые в меню ресурсы. Я обновил пример в статье.