我开发了超过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
答案 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
这在共享主机设置中出现故障,其中涉及不同的用户(文件所有者)。