@VladimirMelnik

Как убрать папку web в yii2?

На дев сервере, Yii2 работает нормально, но на продакшн сервера ко всем адресам автоматически добавляется «web». На продакшн файлы отправляю через гит, поэтому они целы.

Использую два .htaccess:
Первый в руте (public_html): https://pastebin.com/EvHTJQwU
Второй в /web/: https://pastebin.com/6q9rY4tH

Конфиг дев сервера: https://pastebin.com/qiUjLcLU (Стандартный конфиг Open Server'а)
Конфиг продакшн сервера: https://pastebin.com/qYHZ4Ejz

Версия Yii: 2.0.15.1
Версия PHP: 7.1
Apache 2.4
  • Вопрос задан
  • 649 просмотров
Решения вопроса 3
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
исправьте второй htaccess, как тут Как в Yii2 basic убрать web/ из url при помощи .htaccess и правил urlManager'а?
Но мне кажется, правильнее настроить что б домен смотрел в web и выкинуть первый htaccess вовсе.
Ответ написан
Комментировать
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Первый .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>

В web оставить .htaccess по умолчанию.
Если проект находится в поддиректории сервера, то в конфигурации указать такой параметр
$baseUrl = str_replace('/web', '', (new Request)->getBaseUrl());
return [
// параметры конфигурации
'request' => [
   'baseUrl' => $baseUrl,
],
// другие параметры конфигурации
]
Ответ написан
Комментировать
@VladimirMelnik Автор вопроса
Необходимо было прописать 'baseUrl' => '', в массив request (/config/web.php)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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