В предыдущем уроке мы настроили права доступа для менеджеров. Сегодня: приводим сайт в порядок — исправляем поведение при ошибках и настраиваем «невидимую» систему переадресации.
По умолчанию, если пользователь переходит по несуществующей ссылке, MODX просто показывает ему Главную страницу. Это плохое решение: пользователь путается («Почему я на главной?»), а поисковики наказывают сайт за дубли контента (Soft 404). В этом уроке мы создадим настоящую страницу ошибки, которая удержит посетителя, и настроим редиректы.
Почему стандартная настройка — это зло?
Если в настройках MODX (error_page) указан ID главной страницы (обычно 1), происходит следующее:
- По адресу
site.ru/несуществующая-страницаоткрывается дизайн Главной. - Сервер часто отдает код 200 OK вместо 404 Not Found.
- Google и Яндекс думают, что у вас тысячи одинаковых страниц, и понижают рейтинг сайта.
Наша задача: создать отдельную страницу, объяснить MODX, что это страница ошибки, и сделать её полезной.
Настройка системной страницы 404
Шаг 1. Создаем ресурс
- Создайте новый документ в корне сайта (можно скрыть его в папку
System— рекомендую создать не опубликованный ресурс). - Заголовок:
Страница не найдена(404). - Псевдоним (Alias):
404. - Шаблон: Базовый или специальный (без лишних слайдеров, которые есть на главной).
- Меню: Снимите галочку «Показывать в меню».
- Публикация: Ресурс должен быть опубликован!
- Запомните ID этого ресурса (например,
15).
Шаг 2. Переключаем системную настройку
- Идем в Настройки (шестеренка) -> Системные настройки.
- В фильтре по ключу пишем:
error_page. - Скорее всего, там стоит
1(Главная). Меняем значение на ID нашего нового ресурса (15). - Сохраняем.
Теперь при ошибке MODX будет показывать именно этот специальный ресурс.
Шаг 3. Делаем страницу «Умной»
Вместо сухого «Ошибка», давайте предложим пользователю варианты действий. Вставьте этот код в содержимое страницы (Fenom + Bootstrap/Porto):
<div class="container py-5">
<div class="row justify-content-center">
<div class="col-md-8 text-center">
<div class="http-error-main">
<h1 class="font-weight-bold text-color-dark text-10 mb-0">404</h1>
<h2 class="font-weight-bold text-4 mb-4">Упс! Страница потерялась.</h2>
<p class="text-3 text-muted mb-5">
Мы не можем найти то, что вы ищете. Возможно, страница была удалена
или вы ошиблись при вводе адреса.<br>
Воспользуйтесь поиском или перейдите на <a href="/">Главную</a>.
</p>
</div>
{* Форма поиска *}
<form role="search" action="/search/" method="get" class="mb-5">
<div class="simple-search input-group">
<input class="form-control text-1" name="search" type="search" placeholder="Поиск по сайту...">
<button class="btn btn-primary" type="submit">
<i class="fas fa-search header-nav-top-icon"></i> Найти
</button>
</div>
</form>
</div>
</div>
<div class="row">
<div class="col">
<h3 class="font-weight-bold text-4 mb-4">Пока вы здесь, почитайте свежее в блоге:</h3>
{* Выводим 3 случайные статьи *}
<div class="row">
{'!pdoResources' | snippet : [
'parents' => 12,
'limit' => 3,
'sortby' => 'RAND()',
'tpl' => '@FILE chunks/blog/post_preview.tpl',
'includeTVs' => 'image,post_image',
'tvPrefix' => ''
]}
</div>
</div>
</div>
</div>
Управление редиректами (Redirector)
Чтобы пользователи вообще не попадали на 404 страницу при смене URL, используем компонент Redirector.
Установка и настройка
- Установите пакет Redirector через «Загрузить дополнения» из основного репозитория.
- В Системных настройках найдите раздел
redirector. - Включите опцию
redirector.track_uri_updates.

Как это работает: если вы переименуете статью (измените Alias), Redirector автоматически запомнит старый адрес и создаст правило: Старый адрес -> 301 -> Новый адрес. SEO-вес ссылки сохранится полностью.
Контрольная проверка
Убедитесь, что сервер отдает правильный статус.
- Откройте любую несуществующую страницу вашего сайта (например,
site.ru/blabla123). - Нажмите F12 -> вкладка Network.
- Обновите страницу.
- Самая верхняя строка (запрос документа) должна иметь статус 404.
Если там 200 — вернитесь к Шагу 2 и убедитесь, что в error_page стоит ID ресурса 404, а сам ресурс опубликован.








