Умная 404 ошибка и управление редиректами в MODX

Курс

В предыдущем уроке мы настроили права доступа для менеджеров. Сегодня: приводим сайт в порядок — исправляем поведение при ошибках и настраиваем «невидимую» систему переадресации.

По умолчанию, если пользователь переходит по несуществующей ссылке, MODX просто показывает ему Главную страницу. Это плохое решение: пользователь путается («Почему я на главной?»), а поисковики наказывают сайт за дубли контента (Soft 404). В этом уроке мы создадим настоящую страницу ошибки, которая удержит посетителя, и настроим редиректы.

Почему стандартная настройка — это зло?

Если в настройках MODX (error_page) указан ID главной страницы (обычно 1), происходит следующее:

  • По адресу site.ru/несуществующая-страница открывается дизайн Главной.
  • Сервер часто отдает код 200 OK вместо 404 Not Found.
  • Google и Яндекс думают, что у вас тысячи одинаковых страниц, и понижают рейтинг сайта.

Наша задача: создать отдельную страницу, объяснить MODX, что это страница ошибки, и сделать её полезной.

Настройка системной страницы 404

Шаг 1. Создаем ресурс

  1. Создайте новый документ в корне сайта (можно скрыть его в папку System — рекомендую создать не опубликованный ресурс).
  2. Заголовок: Страница не найдена (404).
  3. Псевдоним (Alias): 404.
  4. Шаблон: Базовый или специальный (без лишних слайдеров, которые есть на главной).
  5. Меню: Снимите галочку «Показывать в меню».
  6. Публикация: Ресурс должен быть опубликован!
  7. Запомните ID этого ресурса (например, 15).

Шаг 2. Переключаем системную настройку

  1. Идем в Настройки (шестеренка) -> Системные настройки.
  2. В фильтре по ключу пишем: error_page.
  3. Скорее всего, там стоит 1 (Главная). Меняем значение на ID нашего нового ресурса (15).
  4. Сохраняем.

Теперь при ошибке 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.

Установка и настройка

  1. Установите пакет Redirector через «Загрузить дополнения» из основного репозитория.
  2. В Системных настройках найдите раздел redirector.
  3. Включите опцию redirector.track_uri_updates.
    Настройка редиректора

Как это работает: если вы переименуете статью (измените Alias), Redirector автоматически запомнит старый адрес и создаст правило: Старый адрес -> 301 -> Новый адрес. SEO-вес ссылки сохранится полностью.

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

Убедитесь, что сервер отдает правильный статус.

  1. Откройте любую несуществующую страницу вашего сайта (например, site.ru/blabla123).
  2. Нажмите F12 -> вкладка Network.
  3. Обновите страницу.
  4. Самая верхняя строка (запрос документа) должна иметь статус 404.

Если там 200 — вернитесь к Шагу 2 и убедитесь, что в error_page стоит ID ресурса 404, а сам ресурс опубликован.

Оцените статью
MODX 3
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.