我正在建立一个包含不同城市内容的门户。
当有人访问网站时,我希望他们选择城市然后继续
到
或者
这可以使用单个数据库并安装 cakephp 来完成吗?
我正在建立一个包含不同城市内容的门户。
当有人访问网站时,我希望他们选择城市然后继续
到
或者
这可以使用单个数据库并安装 cakephp 来完成吗?
是的,这是可能的。
基本上,在您的 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
...
}
}
所以基本上,这之后取决于你的应用程序架构是什么以及你如何处理这个城市。