Установка yii2. Избавиться от frontend/web/ и backend/web/ в url-е

74
14 марта 2022, 19:10

Устанавливаю yii2. Мне необходимо сделать так чтобы по ссылке "site.ru/" - выдавалась стартовая страница, а по ссылке "site.ru/admin/" открывалась админская часть. Сейчас они доступны только по ссылкам "site.ru/backend/web/index.php" и "site.ru/frontend/web/".

ВОПРОС В СЛЕДУЮЩЕМ.

Я нашел множество вариантов как это сделать с помощью htaccess-ов(например здесь https://pro-cod.ru/ubiraem-frontend-web-i-backend-web-yii2.html). И с ними все работает. НО неужели в yii2 нет встроенных способов решений этой проблемы? Неужели нужно обязательно так "костылить"? Может можно просто в каком нибудь конфиге прописать эти урлы и все заработает? Или такого способа не предусмотрено?

Answer 1

Файл .htaccess позволяет изменять настройки веб-сервера Apache для конкретного хоста. Yii2 не умеет редактировать эту конфигурацию и лишь обрабатывает поступающие запросы к конкретному скрипту.

Вы можете не создавать файл .htaccess и настроить конфигурацию напрямую в файле конфигурации виртуал хоста Apache, указав DocumentRoot:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot "/path/to/project/frontend/web"
    Options +FollowSymlinks
    ...
</VirtualHost>```
Answer 2

Не надо городить все в кучу. frontend и backend это разные хосты. Обычно фронт открывается по запросу site.ru, а все остальные цепляют на поддомены (admin.site.ru). Для каждого хоста корневой директорией должна быть директория web. Для фронта /project-path/frontend/web/, например. Делается это для того, чтобы запросы из сети не могли добраться до файлов основного приложения. Такая вот своеобразная безопасность.

И когда у нас наравне с frontend и backend появляются еще экземпляры приложений (api, forum, payment...), то мы делаем для них отдельный хост и точно также корневой директорией является /project-path/api/web/.

Теперь представим, что у нас корневой директорией является директория всего проекта и все запросы отправляются туда.Возникает солидный набор костылей в файлах конфигурации хоста, открывается потенциальная дыра (например, из api можно добраться до payment или другой директории).

READ ALSO
Разлогинить пользователя в Laravel

Разлогинить пользователя в Laravel

Как настроить авто выход (разлогиниться) в Laravel спустя к примеру 10 мин ?

212
Как вывести в датах &quot;сегодня&quot; и &quot;вчера&quot;?

Как вывести в датах "сегодня" и "вчера"?

Есть вывод новостей списком, вида:

147
php parser, что моло пойти не так?

php parser, что моло пойти не так?

Попросили спарсить цены на 1 продукт в разных магазинах

215