MODX: поисковая оптимизация (SEO)
Поисковая оптимизация сайта (SEO) на платформе MODX Revolution.
Инструкция подходит для MODX Revolution 2 и 3 версий.
Для наглядности в качестве примера в статье используется домен abv123.ru.
Редирект с 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
Редирект с 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/.
Дружественные URL
Установите расширение "translit" для транслитерации псевдонимов.
Для этого перейдите во вкладку Пакеты – Установщик – Загрузить пакеты. В строке поиска введите "translit" – Загрузить – Вернуться в менеджер пакетов – Установить.
Откройте Системные настройки & События и внесите следующие изменения:
Раздел: Дружественные URL
- Суффикс контейнера - сделайте значение пустым.
- Метод фильтрации символов в псевдонимах - alphanumeric.
- Транслитерация псевдонимов - russian.
- Использовать дружественные URL - Да.
- Строгий режим дружественных URL - Да.
- Проверять на дублирование URI во всех контекстах - Да.
- Использовать вложенные URL - Да.
- Схема URL - abs
- Строгий метод запроса - Да
Для того чтобы внутренние страницы сайта открывались без слеша на конце, добавьте в начале файл .htaccess строку
RewriteRule ^(.*)\/$ $1 [R=301,L]. В итоге получится так:
RewriteEngine On
RewriteRule ^(.*)\/$ $1 [R=301,L]
RewriteBase /
Если панель управления сайтом будет уходить в бесконечный редирект, переименуйте файл ht.access в .htaccess в папке /manager. В файле .htaccess сработает правило RewriteEngine Off.
Создание канонических ссылок
Подскажем поисковому работу какую страницу считать предпочтительной для показа в результатах поиска. Для этого настроим вывод атрибута rel="canonical".
Создайте сниппет Canonical со следующим содержимым:
$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.
Карта сайта (Sitemap)
Для создания карты сайта понадобится модуль pdoTools. После его установки создайте новый документ:
- Заголовок: sitemap.
- Псевдоним: sitemap.
- Шаблон: пустой шаблон.
- Тип содержимого: XML.
- Включите чек-боксы: Скрыть из меню, Опубликован, Кэшируемый, Очистить кэш.
- Содержимое:
[[pdoSitemap? &showHidden=`1` ]]
Параметр &showHidden=`1` скроет из карты сайта неопубликованные ресурсы.
Проверьте файл Sitemap с помощью инструмента Анализ файлов Sitemap.
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.
Страницы 404, 405, 503
Создайте документ:
- Заголовок: Страница не найдена – 404.
- Псевдоним: 404.
По аналогии создайте еще 2 документа для страниц 401 и 503.
Перейдите в Системные настройки.
Раздел: СайтУкажите id страниц для ресурсов:
Страница ошибки 404 «Документ не найден»
Страница ошибки 401 «Доступ запрещен»
Страница ошибки 503 «Сайт недоступен».
-
Владимир 29 мая 2025, 16:30 # ↓Сделал все как в инструкции. При открытии админки происходит бесконечная переадресация. Если убрать правило, которое убирает слеш в конце ссылки, то админка работает.ответить
-
Поляков Сергей 29 мая 2025, 16:42 # ↑ ↓Вероятно конфликтуют правила переадресаций в файлах .htaccess и те что настроены на вашем хостинге. Универсальное решение — отключите редиректы для панели управления. Для этого достаточно переименовать файл ht.access в .htaccess в папке /manager.ответить
-
Владимир 29 мая 2025, 16:59 # ↑ ↓Заработало. Спасибо!ответить
-
-
-
Malse 01 июня 2025, 22:25 # ↓В карте сайта выводятся все страницы, включая технические и тестовые. Это как-то можно убрать?ответить
-
Поляков Сергей 01 июня 2025, 22:31 # ↑ ↓Добавьте к Sitemap параметр showHidden=1, чтобы не публиковать скрытые в меню ресурсы. Я обновил пример в статье.ответить
-