I
I
Ivan Pashin2016-11-08 00:12:18
Yii
Ivan Pashin, 2016-11-08 00:12:18

How to add "/" at the end of URL in Yii 2 Advanced Application Template?

Good day.
Can you tell me how to add a slash at the end of the URL in case of using Yii 2 Advanced Application Template?
At the moment my .htaccess looks like this:

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

Accordingly, the following .htaccess file is located in the "/frontend/web/" and "/backend/web/" folders:
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

How to implement a redirect from such pages as https://site.ru/cat-1 to https://site.ru/cat-1/ ?
PS Also included are settings for redirecting to HTTPS and redirecting from www.site.ru to site.ru on TimeWeb hosting.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
V
Viktor Taran, 2016-11-22
@IvanFantoM

############################################################################
#### Убираем повторяющиеся слеши (/) в 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]
   # Добавляем слеш в конце.

M
Maxim Fedorov, 2016-11-08
@qonand

in the application's Url manager, add the suffix parameter with the appropriate value, for example:

'components' => [
    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,       
        'suffix' => '/',
    ],
]

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question