привязать поддомен к модулю.
-
- Сообщения: 4
- Зарегистрирован: 2011.11.10, 11:02
привязать поддомен к модулю.
Привет.
Проблема такая.
Есть сайт на Yii 1.1.7 содержащий админку и пользовательскую часть.
Админка должна располагаться по адресу http://site.com
Пользовательская часть по адресу http://domen.site.com
Подскажите в какую сторону копать.
Проблема такая.
Есть сайт на Yii 1.1.7 содержащий админку и пользовательскую часть.
Админка должна располагаться по адресу http://site.com
Пользовательская часть по адресу http://domen.site.com
Подскажите в какую сторону копать.
Re: привязать поддомен к модулю.
в UrlManager есть возможность создавать правила используя доменные имена.
Вот тут глнять можно http://www.yiiframework.com/doc/guide/1 ... -hostnames
Вот тут глнять можно http://www.yiiframework.com/doc/guide/1 ... -hostnames
-
- Сообщения: 4
- Зарегистрирован: 2011.11.10, 11:02
Re: привязать поддомен к модулю.
Не совсем получается.
Делаю так:
Правило
срабатывает и открывается дефолтная страница модуля user.
Но если к этому правилу добавить какие - либо именованные параметры для определения пары controller/action, то они почему-то берутся
не из модуля и соответственно выдается 404 ошибка.
Хотя контроллер и соотвтствующий актион есть в модуле.
То есть такой запрос
http://site.com/user/test
Откроет дефолтную страничку контроллера test.
А правило
не срабатывает на запрос
http://domain.site.com/
Хотя, насколько я понял, должно.
Делаю так:
Правило
Код: Выделить всё
'http://domain.site.com/' => 'user/',
Но если к этому правилу добавить какие - либо именованные параметры для определения пары controller/action, то они почему-то берутся
не из модуля и соответственно выдается 404 ошибка.
Хотя контроллер и соотвтствующий актион есть в модуле.
То есть такой запрос
http://site.com/user/test
Откроет дефолтную страничку контроллера test.
А правило
Код: Выделить всё
'http://domain.site.com/<c:\w+>' => 'user/<c>'
http://domain.site.com/
Хотя, насколько я понял, должно.
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: привязать поддомен к модулю.
У меня свой urlManager для таких целей, правда там домены второго уровня и хранятся они в БД.
-
- Сообщения: 4
- Зарегистрирован: 2011.11.10, 11:02
Re: привязать поддомен к модулю.
Пример можешь показать, что менять в нем надо? И как подключить его?
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: привязать поддомен к модулю.
Код: Выделить всё
public function parseUrl($request)
{
$route=parent::parseUrl($request);
if(strpos($route,'admin')===0)
return $route;
/*
$site=Site::model()->find('domain=?',array($request->getServerName()));
// Если сайт неизвестен или не связан с сайтовым модулем
if(!isset($site) || (/** @var $module SiteModule *//*$module=Yii::app()->getModule($site->module)) && !is_subclass_of($module,'SiteModule'))
throw new CHttpException(404,'Неизвестное доменное имя, добавьте его через админку');
return $module->getId().'/'.$route;
*/
// Теперь нас. пункт
/*
if(!empty($_GET['location'])){
$location=Location::model()->findByPath($_GET['location'],false);
if(!isset($location))
throw new CHttpException(404,'Такого нас. пункта не существует');
Yii::app()->pageInfo->setLocation($location);
}
return $route;
*/
}
-
- Сообщения: 4
- Зарегистрирован: 2011.11.10, 11:02
Re: привязать поддомен к модулю.
Как подключал свой класс? У меня не получилось.
Поэтому сделал бэкап исходного и прям в родном классе изменил метод.
Массив $rules имеет такой вид
Поэтому сделал бэкап исходного и прям в родном классе изменил метод.
Код: Выделить всё
public function parseUrl($request)
{
if($this->getUrlFormat()===self::PATH_FORMAT)
{
$rawPathInfo=$request->getPathInfo();
$pathInfo=$this->removeUrlSuffix($rawPathInfo,$this->urlSuffix);
foreach($this->_rules as $rule)
{
if(($r=$rule->parseUrl($this,$request,$pathInfo,$rawPathInfo))!==false)
$return = isset($_GET[$this->routeVar]) ? $_GET[$this->routeVar] : $r;
}
if($this->useStrictParsing)
throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
array('{route}'=>$pathInfo)));
else
$return = $pathInfo;
}
else if(isset($_GET[$this->routeVar]))
$return = $_GET[$this->routeVar];
else if(isset($_POST[$this->routeVar]))
$return = $_POST[$this->routeVar];
else
$return = '';
//----------------------------------------------------------------------------
$rules = require(YiiBase::getPathOfAlias('ext') .'/subdomains.php');
$subdomain = explode('.',getenv('HTTP_HOST'));
$subdomain = $subdomain[0];
if(array_key_exists($subdomain, $rules))
$module = $rules[$subdomain];
else
$module = '';
return $module .'/'. $return;
}
Код: Выделить всё
array('domain' => 'module',);
Re: привязать поддомен к модулю.
Не должно. Модификатор "+" означает 1 или множество. В адресе http://domain.site.com/ у вас нет ничего после /, то есть ноль. А ноль не предполагается модификатором "+", поэтому и не срабатывает.suppergrower писал(а): А правилоне срабатывает на запросКод: Выделить всё
'http://domain.site.com/<c:\w+>' => 'user/<c>'
http://domain.site.com/
Хотя, насколько я понял, должно.
Можно сделать отдельное правило для http://domain.site.com/
Конференция: yii@conference.jabber.ru