Доброе утро.
Подробно про правила маршрутизации можно посмотреть
здесь. Звук хромает, но понять можно.
Чтобы убрать из адресной строки index и defaul можно воспользоваться .htaccess.
На примере basic приложения это выглядит так:
В директории web .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} ^/web/*
RewriteRule . index.php
.htaccess в корне проекта
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)$ web/$1 [L]
RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ web/index.php
</IfModule>
В настройках urlManager исключить из адреса файлы index
'showScriptName' => false,
Если проект находится в поддиректории локального сервера, например
/home/user/localhost/www/project_name, то в настройках приложения надо указать параметр
baseUrl$baseUrl = str_replace('/web', '', (new Request)->getBaseUrl());
'request' => [
'cookieValidationKey' => ADFAEk3o9dfhwleSDFo',
'baseUrl' => $baseUrl,
],
Так, при помощи
$baseUrl, Вы динамически задаёте название директории проекта. Можно её переименовывать, но при этом не надо будет редактировать файл конфигурации. Да и вообще, с этой настройкой можно перемещать файлы проекта и в поддиректорию и в корень.
Правила в urlManager могут выглядеть так:
'' => 'site/default/index',
'contact' => 'site/contact/index',
'<_a:(error)>' => 'site/default/<_a>',
// это правило для модуля users
'<_a:(login|logout|signup|password-rest-request|email-confirm|reset-password)>' => 'users/default/<_a>',
'<_m:[\w\-]+>' => '<_m>/default/index',
'<_m:[\w\-]+>/<_c:[\w\-]+>' => '<_m>/<_c>/index',
'<_m:[\w\-]+>/<_c:[\w\-]+>/<_a:[\w\-]+>' => '<_m>/<_c>/<_a>',
'<_m:[\w\-]+>/<_c:[\w\-]+>/<id:\d+>' => '<_m>/<_c>/view',
'<_m:[\w\-]+>/<_c:[\w\-]+>/<id:\d+>/<_a:[\w\-]+>' => '<_m>/<_c>/<_a>',
Для advanced настройки .htaccess несколько другие.