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

4

5 回答 5

4

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

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

于 2009-11-13T16:35:41.133 回答
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 访问)。这并不理想,尽管没有什么可以阻止它工作,但就带宽使用和跨站点安全问题而言,它可能会出现问题。

使用虚拟主机,您处于两种选择之间的中间位置;只要他们都可以访问相同的文档根目录,您仍然可以使用包含(如dland在这些答案的其他地方所建议的那样)。

于 2009-11-13T16:33:05.480 回答
0

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

然后您可以将它们包含在与当前 php 文件相同的目录中。

于 2009-11-13T16:32:33.510 回答
0

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

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

于 2009-11-13T16:33:27.767 回答
0

如果它们在同一台服务器上,您可以符号链接文件:

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

这在涉及不同用户(文件所有者)的共享主机设置中分解。

于 2009-11-13T16:37:30.293 回答