2009-11-13 42 views
3

我已经开发了超过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的

+2

您是否将这些网站部署到其他服务器/位置,还是全部托管在您开发它们的同一台服务器上? – 2009-11-13 16:27:31

+0

他们都在同一台服务器上 – Lizard 2009-11-13 16:30:18

+0

他们都在同一个域名? – 2009-11-13 16:31:56

回答

4

我会让你的50个虚拟主机都使用相同的DocumentRoot。这样你保证所有的网站都会使用相同的公共文件。

要选取不同的css和图像目录,请使用Alias指令指向每个VirtualHost的显式目录。

+0

是的虚拟主机很好地解决了这个问题。 – Xailor 2009-11-13 16:48:56

+0

我已经这样做了.. 的DocumentRoot的/ home/corefiles /的public_html AliasMatch /testme/(.*)/家庭/名为ftpuser /的public_html /测试/ $ 1 问题是,名为ftpuser没有权限读取corefiles文件。不知道如何解决这个问题。 (testme/file.css工作得很好!) – Lizard 2009-11-13 16:54:57

+0

我也对此感兴趣,你实际得到的错误是什么? – robjmills 2009-11-13 20:22:05

0

如果这些网站都在同一台服务器上,你可以只包含的文件在你的PHP包括。

那么你可以将它们包括,就好像它们在你当前的php文件所在的目录中一样。

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)。

+0

如上所述,这听起来像你需要一个共同的lib目录共享文件。然后,您可以修补所有站点中的通用代码中的任何错误,而无需在其他50个位置复制该错误。 – 2009-11-13 16:47:33

0

我想你可以从主文件夹中包含所需的文件,你必须使它可以从所有站点访问(使用软链接会导致服务器认为他们在每个站点的目录中)

使用软链接可以使路径问题更容易,并且不需要使用httpdocs目录之外的路径。

0

如果他们是在同一台服务器上,你可以只符号链接文件:

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

这一个共享的主机设置,其中不同的用户(业主文件)参与分解。