Как настроить Yii2 под виртуальный хостинг?

Всем привет!
Пытаюсь залить готовый сайт на Yii2 на виртуальный хостинг.
На локалке всё работает нормально, но из хостинга выдаёт страницу "Apache 2 Test Page powered by CentOS"

1. Я понял, что это из за отсутствия индексного файла
2. Поискал решение в сети, все советуют в руте сайта в файле .htaccess прописать Options +Indexes - не помогает!
3. В журнале ошибок есть запись Directory index forbidden by Options directive

Доступа к конфигу httpd.conf у меня нет.

Пока, вернул .htaccess в руте в такую форму:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
RewriteRule ^css/(.*)$ web/css/$1 [L]
RewriteRule ^js/(.*)$ web/js/$1 [L]
RewriteRule ^images/(.*)$ web/images/$1 [L]
RewriteRule ^fonts/(.*)$ web/fonts/$1 [L]
RewriteRule ^sitemap.xml web/sitemap.xml [L]
RewriteRule ^robots.txt web/robots.txt [L]
RewriteRule (.*) /web/$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php
  • Вопрос задан
  • 821 просмотр
Решения вопроса 1
doniyorbekm
@doniyorbekm Автор вопроса
Yii-шник
Решилось!
1. При загрузке файла .htaccess на виртуальный хостинг - точка в начале файла не передавалась. Переименовал
2. Директива Options +FollowSymLinks не была разрешена, так что я прописал Options +SymLinksIfOwnerMatch

Вот и всё решение!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Если бы не было индексной страницы, то, скорей всего, Вам выдало бы 403 ошибку или работа yii2 завершилась бы ошибкой.
Проблема, я думаю, в настройках .htaccess и urlManager.
Попробуйте сделать следующее:
1) В корень проекта положите .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>

2) В директорию web такой .htaccess
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

И проверьте работу сайта.
После этих манипуляций директория web должна уйти из адресной строки. Дополнительных параметров для подключения ресурсов не нужно писать в .htaccess, все ресурсы сложите в web и настройте AssetBundle.
Если проект находится у Вас в поддериктории, то в конфигурационном файле укажите следующий параметр
'request' => [
   'baseUrl' => '/name_folder', // перед именем должен быть слеш
],
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы