0

我将制作一系列大约 5 个网站。它们都需要在同一个系统上运行。我打算让它们都指向同一个服务器,然后根据用于访问它的域,将提供不同的内容/样式。因此,它本质上将是 5 个左右不同的零售网站,专门从事特定的产品类型。

但都使用相同的后端代码,因此更容易维护。我以前从未设置过这样的东西,想知道是否有任何我应该考虑的信息,或者是否有人知道一个解释如何做好这件事的好地方?

此外,我们不是托管自己,而是通过托管公司(如果这很重要)。

谢谢!

4

3 回答 3

2

对我来说听起来很直接

只要有一个目录:

/var/www/siteLibraries/foo.php

或其他合适的目录。然后有

/var/www/site1/foo.php
/var/www/site2/foo.php

并在 PHP ( http://uk.php.net/manual/en/language.oop5.autoload.php ) 中设置默认类加载,这样当专家站点实例化一个类时......它将搜索站点的本地库(用于专家覆盖),然后默认为共享库。您也可以通过这种方式安排内容。

一个简短的解释,但如果您不需要担心两个站点共享权限(我假设客户不会编辑代码),我将如何解决它的粗略概述。

请记住:您的每个站点代码应该从默认代码库专门化(OOP 非常适合此)。不具体的,是共享的。当然,共享代码库应该知道它是共享的,因此日志之类的内容应该指定发生错误时哪个特定站点正在使用该库等等。

祝你好运

于 2009-06-24T13:21:59.637 回答
0

我目前正在编写一个内容管理系统来解决这个确切的问题。一些我认为有帮助的事情。

在开发您的网站时,将它们各自减少到最低的公分母。也就是说,您的所有网站都有哪些元素?例如,每个网站都会有一系列页面,可能还有某种形式的购物车系统。

对于我的系统,每个站点都有一个单独的模板文件。这样,我将我的 PHP 和 HTML 分开,这让事情变得容易多了。一旦我有了最小的公分母,对我来说最大的挑战就是区分网站。

我使用我的 htaccess 文件将 example.com 重定向到 www.example.com - 这样,我可以可靠地从标题中获取 www.example.com,并使用它从数据库中选择给定站点的信息。

Aiden 在代码特定方面也有一些优点。对我来说,我发现代码并不是特别的问题,而是我如何为多站点环境实现该代码。

希望这可以帮助。

于 2009-06-24T13:23:16.437 回答
0

如果您希望您的站点具有不同的代码库,Aiden 的方法看起来很不错。

如果您的需求更简单,即所有站点都运行相同的代码,但根据域名显示不同的内容,那么您也可以使用更简单的解决方案。

将所有域指向脚本所在的同一目录,并根据 HTTP“主机”值区分要发送的内容类型。

IE:

$host = $_SERVER["HTTP_HOST"];

$rs = mysql_query("SELECT * FROM products WHERE website = '$host'");

// ...etc

注意:此代码用于说明目的。正如所写的那样,它容易受到 SQL 注入的攻击,您应该适当地保护它。

于 2009-06-24T13:38:38.823 回答