urlManager и поддомены

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
ankaniti
Сообщения: 95
Зарегистрирован: 2012.03.26, 15:15

urlManager и поддомены

Сообщение ankaniti »

Доброго времени суток!
Задумал я сделать поддомены у себя в проекте с помощью urlManager.
В руководстве описан метод параметризации имен хостов. Вот так:

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

array(
    'http://<user:\w+>.example.com/<lang:\w+>/profile' => 'user/profile',
)
 
Я так и сделал:

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

                                 'http://<login:\w+>.mysite.ru/portfolio'=>'project/portfolio/index',
                
                                '<module:\w+>/<controller:\w+>/<action:\w+>/<project:\d+>'=>'<module>/<controller>/<action>', 
                                '<_c:(login|registration)>'=>'user/<_c>',
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
 
И действительно, первое правило срабатывает как надо. Но почему то когда я с этой страницы перехожу на главную или на другую, поддомен остается на прежнем месте(т.е. sombody-login.mysite.ru). Не понимаю почему так. Ведь правило уже не выполняется, никакой get переменной login уже не передаю... странно.
Чую ухом что копнуть нужно в сторону правил роутина, но как - не знаю, хотя может и ошибаюсь.
Спасибо заранее за ответы.

Аватара пользователя
ElisDN
Сообщения: 5667
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: urlManager и поддомены

Сообщение ElisDN »

Фреймворку всё равно, на каком он поддомене в данный момент. Общие правила '<controller:\w+>/<action:\w+>'=>'<controller>/<action>' выполняются на любом поддомене.

Проще дополнить именем хоста абсолютно все правила, типа

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

'http://<login:\w+>.mysite.ru/portfolio'=>'project/portfolio/index',
'http://www.mysite.ru/<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
Сложнее, например, отнаследоваться от CUrlManager, декорируя метод createUrl (по умолчанию дополняя строкой '//www.mysite.ru' генерируемые ссылки если поддомен другой и роут не в списке исключений).

Ответить