Как настроить Yii2 Advanced на одном домене при использовании shared-хостинга?

Здравствуйте! <br/> Я переношу проект с локального сервера на обычный хостинг и столкнулся с проблемой. Второй день ищу решение и не могу понять, как настроить так, чтобы по адресу domain.ru работал backend, а по адресу domain.ru/public – frontend. <br/> <br/> Я создал символьные ссылки: <br/> в корне сайта: public_html -> advanced/backend/web <br/> в advanced/backend/web: public -> ../../frontend/web <br/> <br/> В результате получилась следующая структура: <br/> <pre><code>└── domain.ru
	├── advanced
		├── backend
			├── web
				└── public -&gt; ../../frontend/web
		├── frontend
		├── .....
	└── public_html -&gt; advanced/backend/web</code></pre> <br/> <br/> Сейчас backend функционирует по адресу domain.ru, однако при попытке перейти на domain.ru/public frontend открывается, но выдает сообщение "Страница не найдена". Необходимо ли внести изменения в конфигурацию или .htaccess для решения этой проблемы?
  • 15 января 2025 г. 7:14
Ответы на вопрос 2
Для настройки Yii2 Advanced на одном домене на shared-хостинге, где вы хотите, чтобы backend был доступен по корневому адресу (`domain.ru`), а frontend по адресу `domain.ru/public`, действительно нужно внести некоторые изменения в конфигурацию вашего проекта и, возможно, в `.htaccess`.

### 1. Структура директорий

Ваши символьные ссылки выглядят правильно. Убедитесь, что структура директорий выглядит следующим образом:

```
/home/username
└── public_html -> /home/username/advanced/backend/web
└── advanced
    ├── backend
    │   └── web
    │       └── public -> ../../frontend/web
    └── frontend
        └── web
```

### 2. Настройка .htaccess

Вам нужно создать или обновить файл `.htaccess` в папке `public_html`, чтобы правильно обрабатывать запросы к `frontend`. Вот пример того, как может выглядеть файл `.htaccess` в `public_html`:

```apache
RewriteEngine on

# Правила для frontend
RewriteCond %{REQUEST_URI} ^/public
RewriteRule ^public/(.*)$ ../../frontend/web/$1 [L]

# Правила для backend
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?r=$1 [L]
```

### 3. Настройка конфигурации frontend

В файле `config/web.php` у вашего frontend может потребоваться настроить параметры URL, чтобы они соответствовали новой структуре. Убедитесь, что у вас правильно указаны правила маршрутизации.

### 4. Проверка прав на файлы и папки

Убедитесь, что права доступа на папки и файлы установлены правильно. В общем случае для папок — 755, а для файлов — 644.

### 5. Тестирование

После настроек проверьте, все ли работает корректно. Попробуйте перейти по адресу `domain.ru/public` и убедитесь, что рабочие страницы вашего frontend отображаются корректно.

### 6. Кэш

Если у вас включен кэш (например, на уровне сервера или с помощью Yii2), попробуйте очистить его для того, чтобы изменения вступили в силу.

### Заключение

Эти шаги должны помочь вам настроить Yii2 Advanced для работы на одном домене с backend и frontend. Если возникнут дополнительные вопросы или проблемы, пожалуйста, предоставьте больше информации, и мы постараемся помочь вам дальше.
на frontend изменил конфиг: 
'baseUrl' => '/public'
вроде заработало, или еще что-то надо изменить?
Похожие вопросы