MODX Revo - Ввод названия сайта и настройка ЧПУ

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

Ввод названия сайта производится в окне "Настройка системы". Чтобы в неё зайти необходимо нажать на значок "Шестерёнки" и выбрать в открывшемся меню пункт "Настройка системы".

Настройки системы MODX Revolution

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

Параметр MODX Revolution для изменения названия сайта

Примечание: Сохранять или подтверждать изменения параметров системы в MODX Revolution не требуется.

Но перед тем как переходить к настройке ЧПУ, давайте разберёмся что означает этот термин.

ЧПУ – это понятный для человека веб-адрес страницы сайта, т.е. тот который Вы видите в адресной строке браузера.

Например, адрес веб-страницы на MODX без ЧПУ выглядит следующим образом:
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:

  1. Переименовываем файл ht.access в .htaccess.
  2. Открываем файл .htaccess, находящийся в корневой директории MODX (например, в "z:\home\mysite.ru\www") с помощью текстового редактора.
  3. Проверяем, чтобы 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
  4. Кроме этого сразу же можно настроить ещё одно преобразование, которое будет выполнять редирект с www.домен на домен или обратно (с домен на www.домен). Это осуществляется в зависимости от того, какое имя имеет ваш сайт, а именно с www или без www.
    Содержимое файла .htaccess
  5. Изменяем строчку example-domain-please-change на имя домена, в нашем случае на mysite. А строку com на ru. Так же не забываем убрать знак #, чтобы раскомментировать данные строки. После выполнения вышеперечисленных действий эти строки должны выглядеть следующим образом:
    Настройка ЧПУ в файле .htaccess
  6. Сохраняем изменения в файле.

Для настройки ЧПУ в CMS MODX Revolution необходимо перейти в раздел "Настройка системы" и в поле "Фильтр по разделу..." выбрать из списка пункт "Дружественные URL".

Установка фильтра Дружественные URL на странице Параметры системы

В открывшейся таблице необходимо изменить значения следующих параметров:

  1. Использовать дружественные URL -> Да.
    Параметр MODX - Использовать дружественные URL
  2. Проверять на дублирование URI во всех контекстах -> Да.
    Параметр MODX - Проверять на дублирование URI во всех контекстах
  3. Использовать вложенные URL -> Да. Данный параметр рекомендую использовать, т.к. в этом случае в URL адрес будут включаться названия всех контейнеров на пути к выводимому ресурсу, что будет более наглядно и для веб-разработчика и для посетителей сайта. Также при использовании данного параметра необходимо применять либо полные пути к файлам (изображения, css, javascript и т.д.), либо использовать тег <base /> (<base href="[[++site_url]]" />) в заголовке веб-страницы.
    Параметр MODX - Использовать вложенные URL
  4. Строгий режим дружественных URL -> Да. Данный параметр тоже рекомендую использовать, т.к. это исключит дублирование контейнеров (например: mysite.ru/article/ и mysite.ru/article).
    Параметр MODX - Строгий режим дружественных URL
  5. Автоматически генерировать псевдонимы ->Да. Данному параметру необходимо установить значение «Да», если вы не хотите вручную вводить alias для ресурсов, которые вы будете создавать.
    Примечание: Для автоматической транслитерации псевдонимов необходимо установить пакет "yTranslit" или "translit".
    Параметр MODX - Автоматически генерировать псевдонимы
  6. Транслитерация псевдонимов -> russian. Данный параметр установите в russian, если на сайте Вы хотите использовать транслитерацию для псевдонимов ресурсов (например: mysite.ru/статьи/ -> mysite/articles).
    Параметр MODX - Транслитерация псевдонимов

В итоге для настройки ЧПУ в CMS MODX Revolution мы выполнили следующие действия:

Настройка параметров MODX Revolution для ЧПУ



   MODX Revo 0    9700 0

Комментарии (17)

  1. Алексей # 0
    Подскажите пожалуйста как решить проблему.

    MODX у меня установлен в корень сайта.
    И после настройки .htaccess по вашей рекомендации, вот так:

    RewriteCond %{HTTP_HOST}.
    RewriteCond %{HTTP_HOST} !^site\.ru [NC]
    RewriteRule (.*) site.ru/$1 [R=301,L]

    Все припаркованные домены на сайте, в строке адреса браузера стали отображаться ввиде:
    site.ru/www.priparkovannei-site.ru/

    Как это можно исправить?
    Спасибо.
    1. Юрий # 0
      Подскажите, пожалуйста, где можно изменить правила транслитерации для translit? Например, мне не нравится, что «ы» транслитерируется на «yi», я бы оставил вариант «y». Аналогично для некоторых других букв
      1. Александр Мальцев # 0
        Таблица транслятирации находится в файле:
        core/components/translit/model/modx/translit/tables/russian.php
        1. Юрий # 0
          Спасибо за помощь! Методом тыка уже удалось найти эту таблицу! ) У вас очень полезный сайт. Так держать )
      2. Khio # 0
        Статья понятная. Спасибо!
        1. Елена # 0
          Спасибо огромное за статью, очень понятно! Помогло
          1. Дмитрий # 0
            Подскажите пожалуйста, как писать в .htaccess домены в зоне — рф?
            1. Александр Мальцев # 0
              Необходимо использовать Punycode. Punycode — это метод который переведёт Unicode символы в формат ACE. Для этого можно воспользоваться конверторами:
              _https://hb.by/punycode-converter.aspx
              _https://rx-name.ru/domain/idnconverter
              Полученный Punycode (ACE) использовать в .htaccess.
              Например, сделать редирект с домена рф на ru:
              RewriteEngine On
              RewriteCond %{HTTP_HOST} ^xn--e1af4ajs.xn--p1ai
              RewriteRule ^(.*)$ http://itchief.ru/$1 [R=301,L]
              
            2. Александр # 0
              Скажите, как настроить пути, чтобы по ссылке открыть свою новую страницу?

              Создаю сайт пока локально. Сайт лежит в /assets/templates/. В index.html стоит тег
              <base href="[[!++site_url]]" />
              . Создал страницу с псевдонимом, скажем, page. Из главной пишу ссылку:
              <a href="page.html">page</a>
              . Но открывается снова главная. Пробовал и путь: "/assets/templates/page.html" — то же самое.
              1. Александр Мальцев # 0
                Путь к странице (ресурсу) определяется на основании дерева ресурсов в менеджере MODX Revolution.
                Если ресурс расположен в корне дерева, то путь до него будет:
                протокол://имя_домена/псевдоним(alias)_ресурса
                Если ресурс (2) расположен в другом ресурсе (1), который расположен в корне дерева, то:
                протокол://имя_домена/псевдоним(alias)_ресурса(1)/псевдоним(alias)_ресурса(2)
                И т.д. Но это будет выполняться только в том случае, если в системных настройках параметр «Использовать вложенные URL» имеет значение «Да».

                Но если данная опция имеет значение «Нет», то путь до любого ресурса будет определяться только его псевдонимом (alias).
                Т.е. путь до ресурса (2), который расположен в другом ресурсе (1), который расположен в корне дерева будет следующим:
                протокол://имя_домена/псевдоним(alias)_ресурса(2)

                Но, также важен ещё следующий момент. Если у ресурса установлена галочка «Заморозить URI», то путь к нему будет определяться по ней вне зависимости, где он расположен.
                1. Александр # 0
                  Спасибо. Буду знать. Я обнаружил нечто большее: у меня вообще при вводе в браузере любого адреса вида протокол://my_domain/bla/bla/bla открывается index.html.
                  1. Александр Мальцев # 0
                    Когда вы пытаетесь открыть несуществующую страницу, возникает ошибка 404. Когда возникает эта ошибка, система MODX перенаправляет пользователя на страницу, указанную в системных настройках (error_page).

                    В админке попасть в параметр, отвечающий за это, можно так:
                    Шестерёнка -> Системные настройки -> Сайт (Фильтр по разделу...) -> находим параметр error_page (Страница ошибки 404 Документ не найден). В качестве значения этого параметра указывается id ресурса, на который необходимо перенаправлять пользователя, если ресурс который вы указали не найден.

                    Если у вас в качестве значения установлено 1, то система MODX Revolution будет перенаправлять пользователя (когда ресурс не найден) на страницу с id, равным 1.

                    Если вы хотите обрабатывать эту ошибку, то вам необходимо создать новый ресурс (например, 404) и разместить в нём информацию о том, что такой страницы на сайте нет. Потом после этого указать в качестве значения параметра error_page id этого ресурса. Когда вы это сделаете, пользователь будет попадать на эту страницу, если он введёт не существующий URL.
                    1. Александр # 0
                      Понял. В таком случае я должен вернуться к первой беде — она осталась. Я выключил вложенные URL. Ничего не помогает. На всякий случай вот скрин настроек URL.
                      1. Александр Мальцев # 0
                        Необходимо сделать настройки не только в MODX, но и в конфигурационном файле (например, на Appache .htaccess) сервера. Может вы не настроили конфигурационный файл…
                        1. Александр # 0
                          В файле OpenServer/domains/mysite/.htaccess я ничего не менял. В частности, эти строки остались:
                          #RewriteCond %{HTTP_HOST} .
                          #RewriteCond %{HTTP_HOST} !^example-domain-please-change\.com [NC]
                          #RewriteRule (.*) http://example-domain-please-change\.com/$1 [R=301,L]
                          
                          Я локально работаю. Нужно их (или вообще что-то в этом файле) менять?

                          P.S. Я пробовал менять на http: //mysite, но тогда страницы вообще переставали открываться.
                          1. Александр Мальцев # 0
                            Работаете вы на локальном сервере или нет, настройки всё равно надо проводить. Этот файл осуществляет конфигурирование сервера.

                            Эти строки отвечают за переадресацию с www на без www. Если она вам нужна, то её необходимо настроить.

                            Для работы ЧПУ на сервере необходимы только следующие строки:
                            RewriteEngine On
                            
                            RewriteCond %{REQUEST_FILENAME} !-f
                            RewriteCond %{REQUEST_FILENAME} !-d
                            RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
                            
                            1. Александр # 0
                              Эти строки и так присутствуют… Ладно, Александр, простите за беспокойство! Спасибо за все ответы. И так много времени у вас отнял.

              Вы должны авторизоваться, чтобы оставлять комментарии.