Мультидоменность и Yii

Не так давно озадачилась вопросом - как в рамках одной версии фреймворка развернуть мультидоменный сайт. Например, сайт недвижимости или любых объявлений с доменами по городам. Погуглила, поспрашивала знающих людей и в итоге навояла следующее решение.

Итак, все, что нам нужно - чтобы при заходе на любой субдомен вызывался наш единственный index.php. Для этого делаем следующее:
  1. Разворачиваем Yii. Для примера создала test.int.
  2. Настраиваем Apache. С этим пунктом мне пришлось повозиться очень долго, т.к. не могла добиться нужной работы на денвере. В итоге плюнула и забила гвоздями.
    Как сделала я:
    • создала файл .htaccess в корне сайта с одной единственной записью
      # dnwr_host msk.test.int nsk.test.int
      
      Этой строчкой мы добавляем всего два виртуальных хоста. Такое решение решение вполне подойдет для тестирования на локальном компьютере. Но для продакшна конечно же его использовать нельзя.
    Как следует сделать: почитайте тут. Все предельно ясно, на мой взгляд.
    P.S. странно, но факт - на хостинге с ISPmanager это решение работает на ура, на хостинге с CPanel все-таки приходится заводить отдельные домены, запись *.test.int не работает
  3. Перезапускаем денвер, вводим msk.test.int и радуемся! Одна база, один Yii и много доменов!
  4. Теперь настраиваем urlManager (не забудьте заменить test.int на адрес своего сайта):
    'urlManager' => array(
        'showScriptName' => false,
        'urlFormat' => 'path',
        'rules' => array(
            'http://<domain: w="">.test.int/' => 'site/index',
        ),
    ),
  5. А в components/Controller.php добавила следующее:
    public function init() {
     $domain = Yii::app()->getRequest()->getQuery("domain");
     Yii::app()->setParams(array('city' => City::model()->getCity($domain)));
    }
    
    Как видно, у меня имеется база городов, в которой каждому городу соответствует свой домен. И теперь в любом месте сайта я могу получить ИД текущего города через
    Yii::app()->params['city']
    
На этом, пожалуй, все :)
Еще о том, как можно настроить URL для каталога тут.

Комментарии

Отправить комментарий

Популярные сообщения