Добрый вечер.
RootDirectory настраиваете на корень сайта, не на backend/web и не на frontend/web
В корне сайта .htaccess
RewriteEngine On
RewriteRule ^(frontend|backend)/web/ - [L]
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^admin(\/?.*)$ backend/web/$1 [L]
RewriteCond %{REQUEST_URI} ^/
RewriteRule ^(\/?.*)$ frontend/web/$1 [L]
В backend/web .htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
В backend/config/main.php, в секцию request
'baseUrl' => '/admin'
Перейдя по адресу
http://site.com
попадёте на frontend, а по адресу
http://site.com/admin
- в админку.
Теперь, если захотите перенести сайт в поддиректорию, например subsite, адрес изменится на
http://site.com/subsite
.
Вносите изменения в .htaccess, который в корне сайта.
RewriteEngine On
RewriteRule ^(frontend|backend)/web/ - [L]
RewriteCond %{REQUEST_URI} ^/(subsite/admin)
RewriteRule ^admin(/.*)?$ backend/web/$1 [L]
RewriteCond %{REQUEST_URI} ^/(subsite)
RewriteRule ^(.*)$ frontend/web/$1 [L]
В backend/config/main.php добавляете переменную $baseUrl
$baseUrl = str_replace('/backend/web', '', (new yii\web\Request)->getBaseUrl());
и подставляете в значение baseUrl
'baseUrl' => $baseUrl . '/admin'
В этом случае Вы не заморачиваетсь с названием поддиректории в которую перенесёте сайт, названия можете менять как угодно, но не забываете сменить название и в корневом .htaccess