Блог/Добавляем косую черту в конец URL

Добавляем косую черту/закрывающий слеш в конец URL

Автор: Кудашев Сергей

Наконец решил окончательно добить решение, позволяющее добавлять косую черту, по-другому закрывающий слеш или trailing slash, в конце URL. Важно, что данное решение будет не только для MODX Revolution, но рассматривать его мы будем именно на примере использования в этой замечательной CMS.

Разобьем процесс добавление закрывающих слешей к URL на два этапа. Первый будет касаться системы управления, второй будет касаться настройки сервера (в моем случае Apache). Для добавления косой черты ко всем документам в MODX Revolution необходимо, чтобы были включены Friendly URLS (системная настройка friendly_urls) и Friendly Alias Path (настройка use_alias_path).

После того, как мы убедились, что данные настройки включены, нам нужно сделать так, чтобы CMS формировала ссылки с закрывающим слешем в конце. Для этого мы переходим в Content Types (Типы Содержимого) и в находим тип отвечающий за HTML документы и меняем File Extensions (Расширение Файла) на косую черту.

Добавляем косую черту в конец URL

Все, после этого фокуса CMS будем формировать все ссылки для HTML документов с закрывающим слешем. Теперь немного доработаем настройки сервера, чтобы закрывающие слеши обрабатывались верно. Я работаю с сервером Apache, поэтому внесу следующие правки в .htaccess. Берем оригинальный файл и после :

#RewriteCond %{SERVER_PORT} !^443
#RewriteRule (.*) https://example-domain-please-change.com/$1 [R=301,L]

вставляем следующий код:

# очищаем URL от дублирования слешей, в любом месте, включая конец URL
RewriteCond %{THE_REQUEST} //
RewriteRule ^.*$ $0 [R=302,L,NE]

# любой файл содержащий .html и не существующий физически переписывается
RewriteCond %{REQUEST_URI} (\.)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^.]+)\.html$ $1/ [R=301,L]

# любой файл не содержащий точку и не заканчивающийся на слеш переписывается
RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Все, после внесения всех этих изменений добавление косой черты/закрывающего слеша к концу URL работает как часы. Проверьте например на этом сайте :)

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

  1. ARTFAUL18 января 2018, 04:13#
    Спасибо, всё работает!
    1. Кудашев Сергей18 января 2018, 10:25#
      Рад, что все работает :)
    2. dY12 ноября 2018, 16:08#
      Рад, что, я рад, что все работает :):)