Доброе утро.
Я делаю через два .htaccess
Первый, в web/.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Второй, в корне проекта
<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>
В baseUrl ничего не указываю если приложение находится в корне, то есть, по адресу
site.com.
Если проект находится в поддиректории, например yii2_test и адрес получается
site.com/yii2_test, то тогда в baseUrl указывается имя директории.
В urlManager, что бы можно было зайти по адресу
site.com, без всяких web и site/index в адресной строке, создаётся такое правило:
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rule' => [
'' => 'site/index',
'<_a:[\w-]+>' => 'site/<_a> // для остальных страниц по умолчанию, about, contact
]
]
Всё вышеизложенное относится к basic, если надо в advanced убрать из адреса frontend и backend(можно указать любое имя для backend), то там .htaccess, который в корне приложения, будет другого содержания, в web/.htaccess ничего не меняется.