Yii2 — Настройка ЧПУ

В первом уроке по Yii2 мы установили два доступных шаблона нашего фреймворка и добавили подключении к базе данных. Наши приложения уже полностью готовы к работе, но если Вы обратите внимание на адрес в адресной строке браузера, то увидите, что он имеет не вполне читабельный вид.

 

06

07

Во-первых, Yii2 фреймворк (как и все MVC фреймворки) имеет единую точку входа — это файл index.php в web директории. Поэтому в адресной строке указан путь к этому файлу /web/index.php в Basic шаблоне и /frontend/web/index.php (/backend/web/index.php) в Advanced шаблоне. Он сопровождается get параметром r (что означает rout), который указывает что хочет увидеть пользователь. Например ?r=site/about — означает контроллер site, метод about, что откроет в браузере страницу About.

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

Для шаблона Basic

1. Создаем в папке /[project-folder]/web/ пустой файл .htaccess

08

2. Добавляем в нем инструкцию для сервера Apache

Options +FollowSymLinks
IndexIgnore */*

RewriteEngine on

# 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

3. Открываем файл /[project-folder]/config/web.php. Нас интересуют следующие закоментированные строки:

$config = [
    ....
    'components' => [
        ....
        // код с которым нужно поработать
        /*
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            ],
        ],
        */
        // код с которым нужно поработать
    ],
    ....
];

4. Раскомментируем их, код должен выглядеть так:

$config = [
    ....
    'components' => [
        ....
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            ],
        ],
    ],
    ....
];

09

Выглядит хорошо, но можно сделать еще лучше. В адресной строке все еще видно, что точка входа на сайт находится в паке web. Чтобы исправить это, можно вынести файлы из этой папки в корень приложения, но это не лучший вариант. Снова воспользуемся настройками сервера Apache с помощью файла .htaccess. Создадим новый пустой файл .htaccess в корне Вашего приложения и заполним его следующим содержанием:

Options -Indexes

RewriteEngine on
RewriteRule ^(.*)$ web/$1 [L]

 Внесем дополнительные изменения в файл /[project-folder]/config/web.php.

$config = [
    ....
    'components' => [
        ....
        'request' => [
            ....
            'baseUrl' => '', // новая строка
        ],
        ....
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'baseUrl' => '/', // новая строка
            'rules' => [
            ],
        ],
    ],
    ....
];

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *