IvanFantoM
@IvanFantoM
PHP-разработчик

Как добавить «/» в конце URL в Yii 2 Advanced Application Template?

Доброго времени суток.

Подскажите, как реализовать добавление слэша в конце URL-адреса в случае использования Yii 2 Advanced Application Template?

На данный момент мой .htaccess выглядит так:
Options +FollowSymlinks
RewriteEngine on

RewriteBase /

RewriteCond %{HTTP_HOST} ^site\.ru$
RewriteCond %{REQUEST_URI} !/frontend/
RewriteRule ^(.*)$ /frontend/web/$1 [L]

RewriteCond %{HTTP_HOST} ^backend\.site\.ru$
RewriteCond %{REQUEST_URI} !/backend/
RewriteRule ^(.*)$ /backend/web/$1 [L]

AddDefaultCharset utf-8
AddType 'text/html; charset=utf-8' .html .htm .shtml


Соответственно в папках "/frontend/web/" и "/backend/web/" лежит следующий .htaccess файл:
AddDefaultCharset utf-8

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# favicon
RewriteCond %{REQUEST_URI} ^/favicon\.ico$
RewriteRule (.*) - [L]

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php


Как реализовать редирект с таких страниц как https://site.ru/cat-1 на https://site.ru/cat-1/ ?

P.S. Также включены настройки переадресации на HTTPS и перенаправление с www.site.ru на site.ru на хостинге TimeWeb.
  • Вопрос задан
  • 601 просмотр
Решения вопроса 1
shambler81
@shambler81 Куратор тега htaccess
############################################################################
#### Убираем повторяющиеся слеши (/) в URL                              ####
############################################################################
RewriteCond %{THE_REQUEST} //
RewriteRule .* /$0 [R=301,L]
############################################################################
#### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
   # Если файл содержит точку.
RewriteCond %{REQUEST_FILENAME} !-d
   # И это не директория.
RewriteCond %{REQUEST_FILENAME} -f
   # Является файлом.
RewriteCond %{REQUEST_URI} ^(.+)/$
   # И в конце URL есть слеш.
RewriteRule ^(.+)/$ /$1 [R=301,L]
   # Исключить слеш.

############################################################################
#### Добавляем слеш(/), если его нет, и это не файл.                    ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
   # Если слеша в конце нет.
RewriteCond %{REQUEST_FILENAME} !-f
   # Не является файлом.
RewriteCond %{REQUEST_URI} !\..+$
   # В URL нет точки (файл).
RewriteRule ^(.*)$ $1/ [L,R=301]
   # Добавляем слеш в конце.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
в Url-менеджере приложения добавьте параметр suffix с соответствующим значением, например:
'components' => [
    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,       
        'suffix' => '/',
    ],
]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы