Смотрите логи апача.
Но лучше перенести содержимое frontend/web в корень публичной папки, для backend создать поддомен и содержимое backend/web перенести туда. А все остальное закинуть в папку "yii" и поднять на уровень выше публичной папки. При это и .htaccess мучать не прийдется, достаточно такого:
RewriteEngine on
# hide files and folders
RedirectMatch 404 /\.git
RedirectMatch 404 /composer\.
RedirectMatch 404 /.bowerrc
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
Только надо будет в index.php поправить пути, вот пример:
<?php
defined('YII_DEBUG') or define('YII_DEBUG', false);
defined('YII_ENV') or define('YII_ENV', 'prod');
require(__DIR__ . '/../yii/vendor/autoload.php');
require(__DIR__ . '/../yii/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../yii/common/config/bootstrap.php');
require(__DIR__ . '/../yii/frontend/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../yii/common/config/main.php'),
require(__DIR__ . '/../yii/common/config/main-local.php'),
require(__DIR__ . '/../yii/frontend/config/main.php'),
require(__DIR__ . '/../yii/frontend/config/main-local.php')
);
$application = new yii\web\Application($config);
$application->run();
Получится что-то типа такой структуры:
-yii
--frontend
--backend
--common
--vendor
-public_html
--admin
---css
---js
---images
---index.php
---.htaccess
--css
--js
--images
--index.php
--.htaccess