Yii 2 advanced

Различные вопросы по установке и настройке фреймворка, конфигурции веб-сервера и IDE.
Ответить
Аватара пользователя
mrbighokage
Сообщения: 28
Зарегистрирован: 2014.02.21, 10:33
Откуда: ua

Yii 2 advanced

Сообщение mrbighokage »

Еще такой вопрос по Yii 2 advanced.

структура проекта advanced предполагает использование поддоменов (это если я правильно понял) например
mysite.ru => frontend/web
admin.mysite.ru => backend/web
api.mysite.ru => api/web
...

а если нужно сделать так:
mysite.ru/admin
mysite.ru/api
...

Как правильно разрулить такой вариант в Yii 2 advanced?
Спасибо.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii 2 advanced

Сообщение vova07 »

http://www.yiiframework.ru/forum/viewto ... 19&t=16820 суть другая, но результат тот же.
Аватара пользователя
mrbighokage
Сообщения: 28
Зарегистрирован: 2014.02.21, 10:33
Откуда: ua

Re: Yii 2 advanced

Сообщение mrbighokage »

Спасибо!
Аватара пользователя
mrbighokage
Сообщения: 28
Зарегистрирован: 2014.02.21, 10:33
Откуда: ua

Re: Yii 2 advanced

Сообщение mrbighokage »

Проэкт рарулил по второму варианту через htaccess

Теперь нужно чтобы все ссылки в backend шли через admin. Например
backend/web/index.php/login => admin/login

Непойму почему не работает редирект в htaccess

Код: Выделить всё

RewriteRule ^backend/web/(.*)$ http://%{HTTP_HOST}/admin/$1 [R=301,L]   
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii 2 advanced

Сообщение vova07 »

В конфиге бэкенда прописали "baseUrl" для "request" ?
Что именно не получается? Какие ошибки?
Аватара пользователя
mrbighokage
Сообщения: 28
Зарегистрирован: 2014.02.21, 10:33
Откуда: ua

Re: Yii 2 advanced

Сообщение mrbighokage »

Никаких ошибок нет.
И фронтенд и админка работает.
В админку вход через /admin
Но и фронтенд и админка идут такими ссылками
/backend/web/index.php/...
/frontend/web/index.php/...

А я хочу чтобы было так:
/backend/web/index.php/test => admin/test
/frontend/web/index.php/test => /test

Думаю заменить /backend/web/index.php/ можно через htaccess
но тут редирект не работает. Что-то я делаю нетак.

Это в корневом htaccess

Код: Выделить всё

RewriteRule ^backend/web/(.*)$ http://%{HTTP_HOST}/admin/$1 [R=301,L]     
/backend/conf/main.php

Код: Выделить всё

...
'request' => [
            'baseUrl' => '/admin'
        ],
        'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'rules' => [
                '<action:(login|logout|about|page|index|contact)>' => 'site/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ],
        ],
        'assetManager' => [
            'basePath' => '@webroot/assets',
            'baseUrl' => '@web/assets'
        ]
... 
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii 2 advanced

Сообщение vova07 »

Вероятнее всего у вас отключен модуль "rewrite". Включите его и все должно заработать.
Аватара пользователя
mrbighokage
Сообщения: 28
Зарегистрирован: 2014.02.21, 10:33
Откуда: ua

Re: Yii 2 advanced

Сообщение mrbighokage »

mod_rewrite включен и работает.
Протестил все ссылки щас /admin/test работает

Но ссылки которые дает Yii /test и индекс физически лежит /backend/web/index.php и на выходе в меню ссылка /backend/web/index.php/test
Аватара пользователя
mrbighokage
Сообщения: 28
Зарегистрирован: 2014.02.21, 10:33
Откуда: ua

Re: Yii 2 advanced

Сообщение mrbighokage »

Нашол решение.
Покопался в yii и понял чтобы все заработало надо 'baseUrl' добавить и в urlManager! Для фронтенда например:

Код: Выделить всё

       'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'baseUrl' => '/',
            'rules' => [
                '<action:(login|logout|signup|about|page|index|contact)>' => 'site/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ],
        ],
И еще осталось переопределить Yii::$app->homeUrl
Можно сделать это в конфиге /frontend/config/main.php

Код: Выделить всё

'homeUrl' => '/', 
или в контоллере

Код: Выделить всё

$application->setHomeUrl('/');
Тоже самое сделал для админки. Только baseUrl и homeUrl поставил '/admin/'
Ответить