Как сделать так, чтобы cakephp доставлял контент на другой поддомен? - PullRequest
3 голосов
/ 10 августа 2010

Я создаю портал, в котором будет содержаться содержание разных городов ..

Когда кто-то заходит на сайт, я хочу, чтобы он выбрал город и затем продолжил

до

http://city1.site.com

или

http://city2.site.com

Можно ли это сделать с помощью единой базы данных и установки cakephp?

1 Ответ

5 голосов
/ 10 августа 2010

Да, это возможно.

По сути, в вашем DNS вы должны разрешить размещение * .site.com на одной машине.Таким образом, независимо от того, какой поддомен вы вводите, машина будет одинаковой.

пример записи dns:

*   A   10.0.0.1

Затем в объявлении виртуального хоста вы должны указать

<VirtualHost *>
        DocumentRoot /var/www/path_to_site
        ServerName site.com
        ServerAlias www.site.com *.site.com
</VirtualHost>

таким образом, независимо от того, что вы набираете, то есть что-то. Ie.site.com или city.site.com будут перенаправлены в одно приложение.

Тогда вам просто нужно проанализировать хост из php (желательно в AppController) и преобразовать поддомен в фильтр.

Это немного абстрактно, но вот как я бы это сделал.

Редактировать (ответ на комментарий): Вопрос в том, как построить систему.В основном, если у вас есть:

cite1.site.com

в вашем AppController, вы можете иметь что-то вроде:

class AppController extends Controller {
  function beforeFilter(){
     $host = explode('.', $_SERVER["HTTP_HOST"]);
     $subdomain = $host[0];
     Configure::write('city', $subdomain);
     $this->City->getId($subdomain); //function in City model fetching City ID by city name
     ...
  }
}

Итак, в основном, после этого все зависит от архитектуры вашего приложения и от того, как вы с этим справитесьгород.

...