Загрузка...

Убираем каталог /web/ для приложении Yii

С этой проблемой сталкиваются все, кто начинает писать на ии. Быстрое решение »

Apache

В корне создаем .htaccess:

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/(web)

# Описываем здесь все свои каталоги в web
RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
RewriteRule ^css/(.*)$ web/css/$1 [L]
RewriteRule ^inc/(.*)$ web/inc/$1 [L]
RewriteRule ^js/(.*)$ web/js/$1 [L]
RewriteRule ^sass/(.*)$ web/sass/$1 [L]
RewriteRule ^uploads/(.*)$ web/uploads/$1 [L]
RewriteRule (.*) /web/$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php

В папке web также .htaccess:

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

В файле config\web.php в компонент request добавляем baseUrl:

'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            // ...
            'baseUrl' => '',
        ],

Nginx

Тут еще проще: в конфиге, в блоке server{...} нужно объявить root и дописать ему web в конец, примерно так:

root         /var/www/user/data/www/site.com/web;


Похожие заметки:

Да здравствует Ябунта!

Да, настал момент! Попиарю немного вот этого хостера, ибо есть за что. Переустановил ОС на VDS, поставил новенькую Ubuntu-16.04 c nginx + php-fpm (про прирост производительности можно не говорить, это факт)

Открыть здесь

Настройка сервера

Услуги » Настройка веб-сервера

Регистрация, настройка с моей стороны VDS сервера в соответствии с выбраным вами тарифом

Открыть здесь

Веб-разработка

Займусь вашим проектом, если вам нужен специалист в области веб-разработки

Открыть здесь


Перед тем как писать комментарии, рекомендую ознакомиться:

Markdown синтаксис »

Оформление кода »

Нужна аватарка »

Комментарии


6
avatar

olegpro сказал 13-02-2017 в 07:05


А почему ты для nginx советуешь сменить документ рут, а для apache нет и решаешь каким-то костылем с htaccess? Почему бы для apache не сделать тоже самое, что и для nginx?


avatar

Админ

Роман Жариков сказал 13-02-2017 в 07:24

   В ответ на комментарии автора olegpro

Можно было бы поправить заметку, но лучше отвечу на твой вопрос в этом комментарии.

Конечно можно сделать точно также и для апач, путем редактирования VirtualHost:

<VirtualHost *:80>
    DocumentRoot "/www/site/web"
    ServerName www.site.com

    # Other directives ...

</VirtualHost>

но бывает, что не для всех приемлим такой вариант.


avatar

olegpro сказал 13-02-2017 в 12:27

   В ответ на комментарии автора Роман Жариков

но бывает, что не для всех приемлим такой вариант.

Главное, поправить конфиг nginx для всех приемлем, а для апача почему-то нет :)


avatar

Админ

Роман Жариков сказал 13-02-2017 в 12:44


Просто для nginx только так удобнее всего сделать, а для апач, возможны эти два варианта, причем первый имеет не меньшую популярность, а значит и право быть


avatar

olegpro сказал 13-02-2017 в 12:55

   В ответ на комментарии автора Роман Жариков

Просто для nginx только так удобнее всего сделать

А какие ещё могут быть варианты?


avatar

Админ

Роман Жариков сказал 13-02-2017 в 14:43

   В ответ на комментарии автора olegpro

В идеале никаких, если не считать, к примеру, чтобы вообще всю папку web поднять уровнем выше и немного подкорректировать пути подключения файлов в точке входа index.php, но это же в равной степени можно отнести и к апачу