如何使用共享代码库布局多站点应用程序
How to layout a multisite application with shared codebase
4 个网站共享相同的代码库,每个网站都有一个唯一的域。某些功能可能因域而异,同样适用于 CSS、Javascript 和图像文件。
现在获取 php 中请求的信息的首选方式是什么?谁能指出下面的 advantages/disadvantages 个建议,或者提出更好的建议?
解决方案1:将所有4个域指向同一个index.php,然后通过$_SERVER['SERVER_NAME']
获取域
解决方案 2 与 1. 一样,一个 index.php 用于所有域,但通过 mod_rewrite:
将域作为查询参数传递
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^(.*) [NC]
RewriteRule ^ index.php?site=%1 [QSA,L]
解决方案 3:将 4 个域指向 4 个不同的索引 php,可能在 4 个不同的 public 文件夹中,并在上面定义域这些 index.php 个文件。
这可能听起来微不足道或者似乎无关紧要,但我想确保选择最佳解决方案。
我们之前已经这样做过,使用我们为构建网站构建的框架,该框架支持对 N 个站点使用相同的已安装代码库。我们这样做:
- 让所有域都指向同一个文件中的同一个
index.php
文件
DocumentRoot.
- 使用
.htaccess
让所有页面的所有请求都指向index.php
并重写规则。
然后 index.php
文件设置环境。我们有一个数据库 table,它以一对多的关系将 $_SERVER['SERVER_NAME']
的结果链接到所请求的站点。这样,对 example.com
和 www.example.com
的请求可以引用单个站点,但 example2.com
可以引用不同的站点。一旦 index.php
文件确定了正在访问的站点和页面,它就会从数据库中获取该请求的相关信息,然后创建一个名为 $site[]
的关联数组,该数组存储所发出请求的所有信息。然后使用此数组确定要读入的资产,例如 CRM 中的特定模板,以及要读入的资产是针对该特定站点和页面的(例如 CSS、JS 等)。
4 个网站共享相同的代码库,每个网站都有一个唯一的域。某些功能可能因域而异,同样适用于 CSS、Javascript 和图像文件。
现在获取 php 中请求的信息的首选方式是什么?谁能指出下面的 advantages/disadvantages 个建议,或者提出更好的建议?
解决方案1:将所有4个域指向同一个index.php,然后通过$_SERVER['SERVER_NAME']
解决方案 2 与 1. 一样,一个 index.php 用于所有域,但通过 mod_rewrite:
将域作为查询参数传递RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^(.*) [NC]
RewriteRule ^ index.php?site=%1 [QSA,L]
解决方案 3:将 4 个域指向 4 个不同的索引 php,可能在 4 个不同的 public 文件夹中,并在上面定义域这些 index.php 个文件。
这可能听起来微不足道或者似乎无关紧要,但我想确保选择最佳解决方案。
我们之前已经这样做过,使用我们为构建网站构建的框架,该框架支持对 N 个站点使用相同的已安装代码库。我们这样做:
- 让所有域都指向同一个文件中的同一个
index.php
文件 DocumentRoot. - 使用
.htaccess
让所有页面的所有请求都指向index.php
并重写规则。
然后 index.php
文件设置环境。我们有一个数据库 table,它以一对多的关系将 $_SERVER['SERVER_NAME']
的结果链接到所请求的站点。这样,对 example.com
和 www.example.com
的请求可以引用单个站点,但 example2.com
可以引用不同的站点。一旦 index.php
文件确定了正在访问的站点和页面,它就会从数据库中获取该请求的相关信息,然后创建一个名为 $site[]
的关联数组,该数组存储所发出请求的所有信息。然后使用此数组确定要读入的资产,例如 CRM 中的特定模板,以及要读入的资产是针对该特定站点和页面的(例如 CSS、JS 等)。