В первом уроке по Yii2 мы установили два доступных шаблона нашего фреймворка и добавили подключении к базе данных. Наши приложения уже полностью готовы к работе, но если Вы обратите внимание на адрес в адресной строке браузера, то увидите, что он имеет не вполне читабельный вид.
Во-первых, 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
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' => [
],
],
],
....
];
Выглядит хорошо, но можно сделать еще лучше. В адресной строке все еще видно, что точка входа на сайт находится в паке 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' => [
],
],
],
....
];