MODX Revo - Ввод названия сайта и настройка ЧПУ
Второй урок по созданию блога на MODX Revolution. На этом уроке мы введём название для сайта и научимся настраивать ЧПУ в CMS MODX Revolution.
Ввод названия сайта
Ввод названия сайта производится в окне "Настройка системы". Чтобы в неё зайти необходимо нажать на значок "Шестерёнки" и выбрать в открывшемся меню пункт "Настройка системы".

Так как MODX содержит большое количество настроек, то рекомендую пользоваться фильтрами для отбора нужных параметров (например, параметр "Название сайта" находится в разделе "Сайт"). После выбора фильтра "Сайт" переходим к изменению параметра "Название сайта", для этого необходимо в соответствующем поле ввести нужное название (например: "Мой блог").

Примечание: Сохранять или подтверждать изменения параметров системы в MODX Revolution не требуется.
Настройка ЧПУ для сайта
Но перед тем как переходить к настройке ЧПУ, давайте разберёмся что означает этот термин.
Понятие ЧПУ
ЧПУ – это понятный для человека веб-адрес страницы сайта, т.е. тот который Вы видите в адресной строке браузера.
http://mysite.ru/index.php?id=2
Этот адрес содержит страницу (ресурс), которая имеет идентификатор 2 во внутренней структуре CMS MODX Revolution. Такая запись не является понятным пользователю, да и поисковым машинам Google и Yandex она не очень понятна, что в итоге может привести к более низким позициям при выдаче сайта в этих системах.
Совсем другое дело, когда адрес веб-страницы выводится с помощью ЧПУ, такой адрес отражает понятную для человека иерархию данных на сервере, например:
http://mysite.ru/articles/bootstrap-3/labels-and-icons
Данный адрес отображает страницу "labels-and-icons", которая находится в контейнере "bootstrap-3", а он, в свою очередь, содержится в контейнере "articles".
Настройка файла .htaccess для ЧПУ
Настройка веб-сервера для работы с ЧПУ осуществляется посредством конфигурационного файла .htaccess
:
- Переименовываем файл
ht.access
в.htaccess
. - Открываем файл
.htaccess
, находящийся в корневой директории MODX (например, в "z:\home\mysite.ru\www
") с помощью текстового редактора. - Проверяем, чтобы 3 следующие строчки, идущие после комментария (The Friendly URLs part), были разкомментированы:
# The Friendly URLs part RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Эти строчки обеспечивают интерпретацию адресовindex.php?q=idРесурса
в ЧПУ на сервере.
Для работы вышеприведённых преобразований в файле.htaccess
должна быть включена (до вышеприведённых строчек) директиваRewriteEngine
.RewriteEngine on
- Кроме этого сразу же можно настроить ещё одно преобразование, которое будет выполнять редирект с
www.домен
надомен
или обратно (сдомен
наwww.домен
). Это осуществляется в зависимости от того, какое имя имеет ваш сайт, а именно сwww
или безwww
.
- Изменяем строчку
example-domain-please-change
на имя домена, в нашем случае наmysite
. А строкуcom
наru
. Так же не забываем убрать знак#
, чтобы раскомментировать данные строки. После выполнения вышеперечисленных действий эти строки должны выглядеть следующим образом:
- Сохраняем изменения в файле.
Настройка параметров системы MODX Revolution для ЧПУ
Для настройки ЧПУ в CMS MODX Revolution необходимо перейти в раздел "Настройка системы" и в поле "Фильтр по разделу..." выбрать из списка пункт "Дружественные URL".

В открывшейся таблице необходимо изменить значения следующих параметров:
- Использовать дружественные URL -> Да.
- Проверять на дублирование URI во всех контекстах -> Да.
- Использовать вложенные URL -> Да. Данный параметр рекомендую использовать, т.к. в этом случае в URL адрес будут включаться названия всех контейнеров на пути к выводимому ресурсу, что будет более наглядно и для веб-разработчика и для посетителей сайта. Также при использовании данного параметра необходимо применять либо полные пути к файлам (изображения, css, javascript и т.д.), либо использовать тег <base /> (
<base href="[[++site_url]]" />
) в заголовке веб-страницы. - Строгий режим дружественных URL -> Да. Данный параметр тоже рекомендую использовать, т.к. это исключит дублирование контейнеров (например:
mysite.ru/article/
иmysite.ru/article
). - Автоматически генерировать псевдонимы ->Да. Данному параметру необходимо установить значение «Да», если вы не хотите вручную вводить
alias
для ресурсов, которые вы будете создавать.
Примечание: Для автоматической транслитерации псевдонимов необходимо установить пакет "yTranslit" или "translit". - Транслитерация псевдонимов ->
russian
. Данный параметр установите вrussian
, если на сайте Вы хотите использовать транслитерацию для псевдонимов ресурсов (например:mysite.ru/статьи/
->mysite/articles
).
В итоге для настройки ЧПУ в CMS MODX Revolution мы выполнили следующие действия:
А если в html документе url в таком виде /> использовалась />, то в чем может проблема? Это везде так: в микроразметке, sitemap
В микроразметке еще получилось обойти подставив https, но в остальном нет/>
В карте сайта //site.ru/category/product1
Проблема была в настройках Контекста modx. Поэтому, когда указываем переменную [[++site_url]], выводится то, что будет в Контексте.
Отлично, что разобрались.
Наиболее простой способ — это добавить на страницу атрибут rel=canonical. В итоге дубли будут ссылаться на одну и туже страницу. Т.к. кроме слеша могут быть, например, ещё и URL параметры. В этом случае нужно либо всё это предусматривать, либо использовать rel=canonical.
Если всё же хочется настроить редиректы, то более гибко это можно реализовать посредством плагина (событие OnLoadWebDocument).
как решить эту задачу? Заранее благодарен.
Спасибо огромное за статьи.
Возник такой вопрос.
Меняю псевдоним страницы, а как сделать чтобы автоматом ссылки на нее на всех страницах изменились и не было 404?
Кроме этого способа, дополнение Redirector также автоматически создавать редиректы при изменении URI ресурса. Включение и отключение этого режима осуществляется через системные настройки.
Обычно поисковики в качестве название страницы используют содержимое элемента title. Проверьте, как он у вас формируется.
В большинстве случаев это делается так:
link_tag_scheme — abs
base href=[[++site_url]]
Перенесли сайт на https и слетели ЧПУ адреса. В админке всё включено, в .htaccess прописаны соответствующие инструкции. Однако сайт открывается с адресами вида site/index.php?q=catalogues/kuhni/malogabaritnyie-kuxni. В системных настройках если ставить «строгий режим дружественных url», то пишет сразу «слишком много редиректов», и ошибка показывается на странице то с ЧПУ адресом, то с index.php в адресе. Перепробовали уже все инструкции из интернета, ничего не помогло.
Проверьте, если всё будет хорошо, то значит проблема в некорректных записях в .htaccess.
Вопрос такого рода. Должна ли главная страница сайта всегда иметь псевдоним index? Можно ли главную страницу сайта сделать контейнером для новостей присвоить псевдоним news и публиковать там новости? Спасибо.
Главная страница всегда доступна так (ей не нужны псевдонимы):
Если вы спрашиваете про файл index.php. То это файл, через который работают все страницы в MODX. В MODX страницы не хранятся в виде фалов, они находится в базе и для того чтобы получить ту или иную страницу вам необходимо передать разные параметры в запрос. Другими словами все страницы в MODX — это index.php, но только с разными параметрами в запросе.
1. Можно оставить всё как есть, и добавить редирект с new на главную.
2. Можно сделать главную страницу контейнером и перенести все новости в неё. Ресурс new удалить.
3. Можно главную страницу удалить. Страницу new переименовать в главную, и установить её id в качестве значения параметра site_start.
Создаю новый документ модх его не открывает пишет страница не найдена 404, файлы htacces переименовывал, использую open server, что сделать можно?
1. Как вывести автора (Из профиль-Полное имя:). Нужно для 2. Как скрыть полностью строки мета тегов (кейворд и дискрипшн), если они не заполнены. Сейчас если не заполнено, то выводятся строки в исходном коде (нужно чтобы они полностью скрылись если не заполнены):
meta name=«description» content=""
meta name=«keywords» content=""
Получить имя (fullname) пользователя по id можно с помощью сниппета pdoUsers:
Вывести что-то в зависимости от того имеет какое-то поле значение или нет можно с помощью фильтров.
Например, посредством фильтра notempty:
Автора мне удалось так вывести meta name=«autor» content="[[+modx.user.id:userinfo=`fullname`]]"
натягиваю html сайт на modx c и подключением стилей проблем вообще не возникло.
но когда я начал подключать Wayfinder
возникло пару проблем
1. не хочет тянуть стили темы ( но это еще ладно )
2. не открываются другие страницы, но в меню они появляются)
2.1 шаблоны созданы
2.2 ресурсы(страницы тоже)
2.3 все возможныее ( вроде) настройки чпу тоже
3. после настроект при нажатии на лого дублируется кусок ссылки на главной что это не могу понять и как устранить тоже((
вот кусок ссылки mydomain.ru/[(http://[(http://index.html
чем больше раз нажимаешь, тем больше mydomain.ru/[(http:[(http://[(http://index.html
вот так выглядит ссылка о компании
/[(http://[(http://[(http://index/o-kompanii.html
но все равно вывод главной
Подскажите пожалуйста.
В файле так htaccess
# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
2. Добавьте после RewriteBase / в файл .htaccess строчки:
И еще в комментах писал кто-то «Сейчас с url такого вида mysite.ru/index.php?id=2 пересылает на главную. А как сделать так, чтобы отправляло на существующий ресурс по этому id» — как это сделать (там не написан ответ)?
Для того чтобы по значению параметра id можно было переходить на соответствующий ресурс, переведите параметр request_method_strict обратно в положение отключено.
Необходимо просто сделать путь регистро-зависимым, т.е. нужно не указывать флаг NC в правиле (у вас это и так уже сделано):
эти правила можно поставить сразу после?
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php
RewriteRule ^index\.php$ / [L,R=301]
Как удалить ссылки клоны? Они все равно остались на некоторые ресурсы
Создаю сайт пока локально. Сайт лежит в /assets/templates/. В index.html стоит тег . Создал страницу с псевдонимом, скажем, page. Из главной пишу ссылку: . Но открывается снова главная. Пробовал и путь: "/assets/templates/page.html" — то же самое.
Если ресурс расположен в корне дерева, то путь до него будет:
протокол://имя_домена/псевдоним(alias)_ресурса
Если ресурс (2) расположен в другом ресурсе (1), который расположен в корне дерева, то:
протокол://имя_домена/псевдоним(alias)_ресурса(1)/псевдоним(alias)_ресурса(2)
И т.д. Но это будет выполняться только в том случае, если в системных настройках параметр «Использовать вложенные URL» имеет значение «Да».
Но если данная опция имеет значение «Нет», то путь до любого ресурса будет определяться только его псевдонимом (alias).
Т.е. путь до ресурса (2), который расположен в другом ресурсе (1), который расположен в корне дерева будет следующим:
протокол://имя_домена/псевдоним(alias)_ресурса(2)
Но, также важен ещё следующий момент. Если у ресурса установлена галочка «Заморозить URI», то путь к нему будет определяться по ней вне зависимости, где он расположен.
В админке попасть в параметр, отвечающий за это, можно так:
Шестерёнка -> Системные настройки -> Сайт (Фильтр по разделу...) -> находим параметр error_page (Страница ошибки 404 Документ не найден). В качестве значения этого параметра указывается id ресурса, на который необходимо перенаправлять пользователя, если ресурс который вы указали не найден.
Если у вас в качестве значения установлено 1, то система MODX Revolution будет перенаправлять пользователя (когда ресурс не найден) на страницу с id, равным 1.
Если вы хотите обрабатывать эту ошибку, то вам необходимо создать новый ресурс (например, 404) и разместить в нём информацию о том, что такой страницы на сайте нет. Потом после этого указать в качестве значения параметра error_page id этого ресурса. Когда вы это сделаете, пользователь будет попадать на эту страницу, если он введёт не существующий URL.
Я локально работаю. Нужно их (или вообще что-то в этом файле) менять?
P.S. Я пробовал менять на http: //mysite, но тогда страницы вообще переставали открываться.
Эти строки отвечают за переадресацию с www на без www. Если она вам нужна, то её необходимо настроить.
Для работы ЧПУ на сервере необходимы только следующие строки:
_https://hb.by/punycode-converter.aspx
_https://rx-name.ru/domain/idnconverter
Полученный Punycode (ACE) использовать в .htaccess.
Например, сделать редирект с домена рф на ru:
core/components/translit/model/modx/translit/tables/russian.php
MODX у меня установлен в корень сайта.
И после настройки .htaccess по вашей рекомендации, вот так:
Все припаркованные домены на сайте, в строке адреса браузера стали отображаться ввиде:
Как это можно исправить?
Спасибо.