我正在建设一个门户网站,其中包含不同的城市内容..
当有人来到网站时,我希望他们选择城市,然后继续
到
或
可以使用单个数据库并安装cakephp吗?
答案 0 :(得分:5)
是的,这是可能的。
基本上在您的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>
这种方式无论你输入什么,例如something.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
...
}
}
所以基本上,在此之后,它取决于您的应用程序架构以及您如何处理这个城市。