Дружественные URL в MODX: рабочая настройка на примере
Разбираем настройку дружественных URL в MODX Revolution 3.x на примере каталога: какие системные параметры включить, чем отличается путь через контейнер и почему после изменения адресов появляются 404.

В MODX Revolution 3.x страница товара может открываться как index.php?id=27, а должна — как /catalog/kofe-v-zernah/. Проблема обычно не в одном переключателе: на адрес влияют alias ресурса, путь через контейнер, суффикс, правила веб-сервера и кеш MODX. Разберём рабочий пример для каталога интернет-магазина и покажем, где настройка чаще всего ломается.
Живой пример: каталог с адресами без index.php
Представим сайт на MODX Revolution 3.x. В нём есть контейнер «Каталог» с alias catalog и дочерняя страница «Кофе в зёрнах» с alias kofe-v-zernah. Целевой адрес — https://example.ru/catalog/kofe-v-zernah/.
До настройки MODX может показывать ресурс по техническому адресу вроде https://example.ru/index.php?id=27. Такой URL работает, но хуже читается, неудобен для публикации и не отражает структуру сайта. При этом включение дружественных URL не переименует уже существующие alias автоматически.
Дружественный URL в MODX — это не косметика. Если изменить его без редиректов, вы меняете адрес страницы и рискуете потерять переходы по старым ссылкам.
Что проверить до изменения настроек
- Версия MODX — Revolution 3.x. Названия параметров в других ветках могут отличаться.
- Доступ к панели управления с правами администратора.
- Доступ к настройкам виртуального хоста или файла
.htaccessна Apache. - Резервная копия базы данных и файла конфигурации сайта.
- Понимание текущей структуры: какие ресурсы являются контейнерами, а какие — конечными страницами.
Alias[1] — короткое машинное имя ресурса в MODX. Для страницы «Кофе в зёрнах» это может быть kofe-v-zernah. В alias лучше использовать латиницу, цифры и дефисы: пробелы и кириллица усложняют перенос сайта и ручную работу с адресами.
Три варианта структуры URL
Сначала выберите формат адресов, а уже потом меняйте настройки. Для одного сайта не стоит одновременно использовать несколько схем без понятной причины.
| Схема | Пример | Плюсы | Цена решения |
|---|---|---|---|
| Плоский alias | /kofe-v-zernah/ | Короткий адрес, меньше зависимости от структуры меню | По URL не видно раздел каталога; alias должен быть уникальным на сайте |
| Alias с путём | /catalog/kofe-v-zernah/ | Адрес отражает вложенность и удобен для крупных разделов | Перемещение ресурса меняет URL; нужно следить за контейнерами и редиректами |
| Путь с суффиксом | /catalog/kofe-v-zernah.html | Подходит для проекта, где старые адреса уже заканчиваются на .html | Суффикс выглядит устаревшим и его сложнее убрать без массовых редиректов |
Настройка на примере каталога
1. Включите дружественные URL
В панели MODX откройте системные настройки и найдите параметры, связанные с friendly URL. В MODX Revolution 3.x для базовой схемы нужны:
friendly_urls— включает генерацию дружественных адресов;use_alias_path— добавляет в URL alias родительских контейнеров;friendly_urls_strict— запрещает лишние варианты адреса и помогает держать одну каноническую форму;friendly_url_suffix— задаёт окончание URL. Для схемы со слешем оставьте значение пустым.
Для нашего примера значения должны быть такими: friendly_urls = Да, use_alias_path = Да, friendly_urls_strict = Да, friendly_url_suffix = пусто. Если параметр задан отдельно для контекста, настройка контекста может перекрыть глобальное значение.
2. Проверьте alias ресурсов
Откройте ресурс «Каталог» и убедитесь, что его alias — catalog. У дочерней страницы проверьте alias kofe-v-zernah. Поле «Псевдоним» и поле заголовка — разные значения: изменение заголовка не обязано изменить URL.
После сохранения дочерняя страница должна получить адрес /catalog/kofe-v-zernah/. Если вместо этого получается /kofe-v-zernah/, проверьте use_alias_path. Если в адресе остался index.php, проблема находится не в alias, а в настройке friendly URL или правилах сервера.
3. Проверьте правила веб-сервера
MODX должен получать запросы к несуществующим физическим файлам через фронт-контроллер — обычно это index.php. На Apache эту работу выполняет файл .htaccess, поставляемый с дистрибутивом MODX. Убедитесь, что он находится в корне сайта, переименование из ht.access в .htaccess выполнено, а модуль rewrite разрешён хостингом.
Не заменяйте штатный файл случайным коротким примером из блога: в нём могут быть исключения для существующих файлов и каталогов, правила HTTPS и защита служебных директорий. Если сайт работает на Nginx, .htaccess не читается вообще — правило маршрутизации должен добавить администратор сервера в конфигурацию виртуального хоста.
4. Очистите кеш и проверьте адреса
После изменения настроек очистите кеш MODX. Затем проверьте не только новую страницу, но и несколько разных типов ресурсов:
- Откройте главную страницу. Она должна загрузиться без 500 и 404.
- Откройте контейнер
/catalog/. Должен открыться ресурс каталога, а не список файлов сервера. - Откройте страницу товара
/catalog/kofe-v-zernah/. Должен загрузиться нужный ресурс. - Добавьте в конец адреса несуществимый alias. MODX должен вернуть штатную страницу 404, а не содержимое главной.
- Проверьте ссылку из меню и ссылку в шаблоне. Обе должны вести на одну и ту же каноническую форму.
Когда выбирать плоский адрес, а когда путь
Для небольшого сайта с несколькими независимыми страницами подойдёт плоская схема. Для каталога, базы знаний или корпоративного сайта обычно полезнее use_alias_path: посетитель видит раздел, а редактору проще обнаружить конфликт в структуре.
Путь через контейнер не стоит включать только ради красивого вида. Если товар часто перемещают между категориями, его URL будет меняться. Тогда придётся поддерживать редиректы со старых адресов. Для стабильных публичных страниц лучше заранее выбрать контейнер, который не будет зависеть от временной классификации.
Что ломается чаще всего
Сайт отдаёт 404 после включения настройки
Чаще всего MODX не получает запрос через rewrite. Проверьте наличие .htaccess, поддержку Apache-модуля rewrite и настройки Nginx. Если главная открывается, а вложенные URL дают 404, проблема почти наверняка связана с маршрутизацией, а не с alias конкретной страницы.
В URL появляется index.php
Проверьте friendly_urls и очистите кеш. Если настройка включена, но адрес не меняется, убедитесь, что вы редактируете правильный контекст: для отдельного домена его параметры могут отличаться от глобальных системных настроек.
Две страницы получают похожие адреса
Проверьте alias и родительские ресурсы. При плоской схеме одинаковые alias особенно опасны. Не исправляйте конфликт случайным добавлением цифр, если страница уже опубликована: сначала определите основной адрес и подготовьте перенаправление со старого.
Кириллический alias работает нестабильно
Браузер кодирует кириллические символы, а разные системы могут отображать такой URL по-разному. Для публичных адресов используйте латинский alias, а кириллический заголовок оставляйте в поле заголовка ресурса.
После изменения alias старые ссылки исчезли
MODX не превращает смену alias в полноценную миграцию адресов. Старый URL нужно отдельно перенаправить на новый средствами сервера или подходящим компонентом редиректов. До публикации проверьте ссылки из поиска, рекламы, рассылок и внешних сайтов.
Что настроить после этого
Сначала зафиксируйте выбранную схему URL в документации проекта: нужен ли путь контейнера, будет ли суффикс и какие символы допустимы в alias. Затем соберите список старых адресов и проверьте ответы сервера: старые страницы должны отдавать постоянное перенаправление на новые, а не 404.
В продакшене смотрите не только на факт загрузки страницы, но и на долю 404, цепочки редиректов и дубли URL со слешем и без него. После этого отдельно настройте канонические ссылки и карту сайта. Это уже не часть включения friendly URL, а следующий этап контроля адресной структуры.
[1] Alias — уникальный короткий идентификатор ресурса, который MODX использует при построении дружественного URL.
Тест и проверочная: Быстрые ответы с объяснением, почему остальные варианты неверны
Спросить за 10 ₽Источники: MODX Documentation: Friendly URLs, MODX Documentation: System Settings
Частые вопросы
Можно ли включить дружественные URL на уже работающем сайте?
Почему .htaccess не помогает на Nginx?
Нужно ли оставлять friendly_url_suffix равным .html?
Что делать, если после включения настроек главная работает, а вложенные страницы дают 404?
Можно ли менять alias товара после публикации?
Подойдут ли эти названия настроек для MODX Revolution 2.x?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.