代码之家  ›  专栏  ›  技术社区  ›  Harsha M V

如何让cakephp在不同的子域上交付内容?

  •  3
  • Harsha M V  · 技术社区  · 14 年前

    当有人来到这个网站,我希望他们选择城市,然后继续

    http://city1.site.com

    http://city2.site.com

    1 回复  |  直到 14 年前
        1
  •  5
  •   Nik Chankov    14 年前

    基本上,在您的DNS中,您必须允许*.site.com托管在一台计算机上。 这样,无论您键入哪个子域,机器都将是相同的。

    *   A   10.0.0.1
    

    然后在虚拟主机声明中

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

    这样,无论您键入什么,即something.site.com或city.site.com都将重定向到单个应用程序。

    这有点抽象,但我就是这么做的。

    编辑(回复评论):

    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
         ...
      }
    }
    

    因此,基本上,这取决于你的应用程序架构是什么,以及你如何处理这个城市。