Новая корневая директория для Yii2

Для проектов размещаемых на обычных хостингах с доступом только к одной директории часто приходится сдвигать DOCUMENT_ROOT на один уровень вниз.

Если к хостингу есть доступ по ssh, то создайте симлинк и все заработает, вот так:

ln -s full/path/to/folder/web public_html

В подобной ситуации мы имеем приблизительно такой набор директорий в DOCUMENT_ROOT сервера:

  • assets
  • config
  • controllers
  • forms
  • mail
  • models
  • web (для Yii2 корень приложения обычно указывает сюда)

Чтобы перенаправить запросы посетителей сайта из текущей корневой директории (DOCUMENT_ROOT) в директорию «web» нам необходимо создать два файла конфигурации сервера (в текущем примере рассматривается Apache):

КОРНЕВАЯ_ДИРЕКТОРИЯ/.htaccess
Options -Indexes
 
Options +FollowSymlinks
RewriteEngine On
 
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteRule ^(.*)$ web/$1
КОРНЕВАЯ_ДИРЕКТОРИЯ/web/.htaccess
Options -Indexes
 
Options +FollowSymlinks
RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Также следует обновить «baseUrl» проекта. Это можно сделать в файле конфигурации Yii2 (в примере используется шаблон «basic»):

DOCUMENT_ROOT/config/web.php
<?php
$config = [
    // ...
    'components' => [
        // ...
        'request' => [
            // ...
            'baseUrl' => '', // <---- ВОТ ЭТО
            // ...
        ],
        // ...
    ],
    // ...
];

Остальные файлы проекта изменять не требуется, включая «точку входа» — DOCUMENT_ROOT/web/index.php.

Добавить комментарий