6

一般来说,我的开发只涉及中小型公司和电子商务网站。

我的下一个项目将包含 30 个站点——但是,它们之间将有大约 95% 的共同点。我希望他们有 1 个“大脑”,这意味着我只能推出一次更改、更新框架等。

我想知道 Stack Overflow 系列网站是否这样做(超级用户、stackoverflow、serverfault 等)。

我选择的语言/平台是 PHP 5.3、MySQL 5 和 Kohana 框架。

大脑应该有

  • 1 个可以处理每个站点的管理系统
  • 所有模板都存在于大脑中 - 但是它们有占位符,例如标题、徽标等
  • 一种可以对全局模板进行任何更新的方法将自动过滤到所有其他站点。

我意识到这会给大脑带来很大压力,所以我不得不大量使用服务器端缓存。

我将如何让每个域访问大脑,例如:

http://www.mysite2.com/products/something

默默访问http://www.mothership.com/mysite2/products/something

那会是最好的方法吗?你有什么建议吗?我在正确的轨道上吗?

随时问我更多细节。

4

2 回答 2

3

最简单的方法是使用虚拟主机。基本上,您在一台机器上运行所有站点。一台机器有一个服务于所有站点的 Apache 配置。

如果站点相似多于不同,则只需将所有站点指向一个目录。PHP 文件可以检测它们所服务的站点。您可以为每个站点提供不同的页眉和页脚来处理外观。您也可以通过这种方式限制某些页面。

如果站点的不同之处多于相似站点,则将每个站点指向不同的目录,并在每个目录中都有与这些站点相关的页面。

对于通用功能,您可以使用 mod_rewrite 之类的东西将不同站点上的 URL 映射到同一个脚本,或者您可以在每个位置使用 PHP 脚本来包含/需要通用功能。

基本上有很多选择。您的目标应该是使网站易于维护并将代码重复降至最低。

根据要求,建议阅读:

于 2009-08-25T05:02:52.023 回答
0

您可以在 Apache 中使用<VirtualHost> Directive. 要在 Apache 2.x 下执行此操作,请编辑httpd.conf并取消注释此行(通常位于文件末尾附近)Include conf/extra/httpd-vhosts.conf:. 然后找到文件httpd-vhosts.confVirtualHosts以这种格式输入:

<VirtualHost 10.1.2.3>
DocumentRoot /home/site1
ServerName site1.com
</VirtualHost>

<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site2.com
</VirtualHost>

<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site3.com
</VirtualHost>
于 2009-08-25T05:16:46.567 回答