具有公共文件的多个站点

时间:2009-11-13 16:25:12

标签: php apache symlink

我开发了超过50个网站,它们都使用除了CSS和IMAGES之外的完全相同的文件,我每次创建一个新网站并上传不同的CSS和图像时都会复制这些文件。

将此简单地划分为所有常用文件的1个主要位置的最佳做法是什么?

以下是我每个网站的当前结构:

/home/ftpuser/public_html/commonfile1.php
/home/ftpuser/public_html/commonfile2.php
.....
/home/ftpuser/public_html/commonfileN.php
/home/ftpuser/public_html/commonfolder1/
/home/ftpuser/public_html/commonfolder2/
.....
/home/ftpuser/public_html/commonfolderN/
/home/ftpuser/public_html/css/
/home/ftpuser/public_html/css/mycssfiles.css
/home/ftpuser/public_html/images/
/home/ftpuser/public_html/images/myimages.jpg

如何为每个网站制作位于1个位置的所有常用文件,同时仍然可以定制css和图像。

我正在使用Apache,PHP,Centos

5 个答案:

答案 0 :(得分:4)

我希望你的50个虚拟主机都使用相同的DocumentRoot。这样您就可以保证所有站点都使用相同的公共文件。

要获取不同的css和图像目录,请使用Alias指令指向每个VirtualHost的明确目录。

答案 1 :(得分:1)

最明显的解决方案,假设所有不同的站点都托管在同一服务器/文件系统上,将类似于:

+- common files (outside web root)
|
+- httpdocs (web root)
   |
   +--+- website 1 specific files
   |      |
   |      +- images (etc)
   |
   +--+- website 2 specific files
          |
          +- images (etc)

使用上图,您需要做的就是包含来自共享位置的相关文件,并使用特定于站点的文件(无论是存储在Web内部还是外部)来覆盖/覆盖以实现站点特异性-root)。

如果您的网站全部托管在不同的服务器上,那么它会变得更复杂一些,因为任何公共文件都必须托管在Web根目录的某个位置(可通过http访问)。这并不理想,虽然没有什么可以阻止它工作,但在带宽使用和跨站点安全问题方面,它可能会有问题。

使用虚拟主机,您可以处于两个选项之间的中间位置;只要他们都可以访问相同的文档根目录,您仍然可以使用包含(在这些答案的其他地方作为suggested by dland)。

答案 2 :(得分:0)

如果这些网站都在同一台服务器上,您只需将文件包含在php include中即可。

然后您可以将它们包括在内,就像它们与您当前的php文件位于同一目录中一样。

答案 3 :(得分:0)

我认为您可以#include主文件夹中所需的文件,您必须从所有网站访问它(使用软链接会导致服务器认为它们位于每个网站的目录中)

使用软链接可以更轻松地解决路径问题,并且您不需要在httpdocs目录的“外部”使用路径。

答案 4 :(得分:0)

如果它们位于同一台服务器上,您可以只对文件进行符号链接:

ln -s /home/ftpuser/public_html/commonfile1.php /home/ftpuser/public_html/commonfile2.php

这在共享主机设置中出现故障,其中涉及不同的用户(文件所有者)。