urlManager https|http .com|.local

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
gv0zd
Сообщения: 114
Зарегистрирован: 2012.03.28, 10:00

urlManager https|http .com|.local

Сообщение gv0zd » 2012.05.18, 10:20

Хочу сделать правило для субдомена, чтоб оно одинаково отрабатывалось и для https|http и для домена на локальном и удаленном сервере
Шел от простого
Такой вариант работает

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

        'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName' => false,
            'rules'=>array(
                "http://subdomain.domain.local"=>'controllerName', 
Такой тоже

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

        'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName' => false,
            'rules'=>array(
                "http://subdomain.domain.local"=>'controllerName',
                "http://subdomain.domain.com"=>'controllerName',
                "https://subdomain.domain.local"=>'controllerName',
                "https://subdomain.domain.com"=>'controllerName',
 
Так как себдомены еще будут, да и допустим зона домена может поменяться, хочется какой универсальности
Как это сделать?
Пытаюсь так, не получается

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

        'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName' => false,
            'rules'=>array(
                "<protocol:http|https>://subdomain.domain.<zone:local|com>"=>'controllerName',
 
Не пускает на указанный контроллер :(
Как решить проблему?

gv0zd
Сообщения: 114
Зарегистрирован: 2012.03.28, 10:00

Re: urlManager https|http .com|.local

Сообщение gv0zd » 2012.05.21, 14:57

Ошибка была в том задавая правила нужно явно задавать протокол
Т.е. вот такая вот запись дала результат

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

"http://subdomain.domain.<zone:local|com>"=>'controllerName',
"https://subdomain.domain.<zone:local|com>"=>'controllerName', 
Теперь возникло желание роутить субдомены на модули

Вот это прекрасно работает

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

"http://module.domain.<zone:local|com>"=>'module',
"https://module.domain.<zone:local|com>"=>'module',
 
Это тоже

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

"http://<module:(module1|module2|module3)>.domain.<zone:local|com>"=>'<module>',
"https://<module:(module1|module2|module3)>.domain.<zone:local|com>"=>'<module>',
 
Но стоить только попытаться в модуле разобрать controller и action

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

"http://<module:(module1|module2|module3)>.domain.<zone:local|com>/<controller:\w+>/<action:\w+>"=>'<module>/<controller>/<action>',
"https://<module:(module1|module2|module3)>.domain.<zone:local|com>/<controller:\w+>/<action:\w+>"=>'<module>/<controller>/<action>',
 
Маршрутизация тут же разваливается и идет обращение к site/controller

Что-то не могу разобраться, помогите пжлст

Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: urlManager https|http .com|.local

Сообщение nizsheanez » 2012.05.22, 10:02

http и https в одну переменную тоже положите, а то дублирование полное у вас

gv0zd
Сообщения: 114
Зарегистрирован: 2012.03.28, 10:00

Re: urlManager https|http .com|.local

Сообщение gv0zd » 2012.05.25, 13:41

nizsheanez писал(а):http и https в одну переменную тоже положите, а то дублирование полное у вас
Я выше и писал, что в этом и была ошибка
Yii нельзя задавать протокол в шаблон
Из-за этого как раз и разваливается разбор урла

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

$this->hasHostInfo=!strncasecmp($pattern,'http://',7) || !strncasecmp($pattern,'https://',8); 
А вот мой вопрос с контроллерами и экшнами в модуле остался актуальным
Один раз как-то получилось добиться работоспособности а сейчас опять не фурычит %(

h_elena
Сообщения: 70
Зарегистрирован: 2016.03.23, 14:07

Re: urlManager https|http .com|.local

Сообщение h_elena » 2019.07.01, 22:17

Поднимаю эту тему. А как еще добавить с вариантом с www и без него?

Ответить