Мультидоменность и Yii
Не так давно озадачилась вопросом - как в рамках одной версии фреймворка развернуть мультидоменный сайт. Например, сайт недвижимости или любых объявлений с доменами по городам. Погуглила, поспрашивала знающих людей и в итоге навояла следующее решение.
Итак, все, что нам нужно - чтобы при заходе на любой субдомен вызывался наш единственный index.php. Для этого делаем следующее:
Итак, все, что нам нужно - чтобы при заходе на любой субдомен вызывался наш единственный index.php. Для этого делаем следующее:
- Разворачиваем Yii. Для примера создала test.int.
- Настраиваем Apache. С этим пунктом мне пришлось повозиться очень долго, т.к. не могла добиться нужной работы на денвере. В итоге плюнула и забила гвоздями.
Как сделала я:
- создала файл .htaccess в корне сайта с одной единственной записью
# dnwr_host msk.test.int nsk.test.int
Этой строчкой мы добавляем всего два виртуальных хоста. Такое решение решение вполне подойдет для тестирования на локальном компьютере. Но для продакшна конечно же его использовать нельзя.
P.S. странно, но факт - на хостинге с ISPmanager это решение работает на ура, на хостинге с CPanel все-таки приходится заводить отдельные домены, запись *.test.int не работает - создала файл .htaccess в корне сайта с одной единственной записью
- Перезапускаем денвер, вводим msk.test.int и радуемся! Одна база, один Yii и много доменов!
- Теперь настраиваем urlManager (не забудьте заменить test.int на адрес своего сайта):
'urlManager' => array( 'showScriptName' => false, 'urlFormat' => 'path', 'rules' => array( 'http://<domain: w="">.test.int/' => 'site/index', ), ),
- А в 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 для каталога тут.
Еще о том, как можно настроить URL для каталога тут.
Молодец !!!! Красивое решение.
ОтветитьУдалитьспасибо! :)
Удалить