假设我们有一台运行多个虚拟主机的服务器。某些文件和目录在这些虚拟主机之间共享,例如JS-,HTML-和一些PHP文件。我想防止每次添加新虚拟主机时都必须制作这些文件的新副本,因为这会使文件保持最新。所以我想要做的是将这些共享文件放在另一个父目录中,即/ var / www / shared_files /。
因此,当请求其中一个共享文件,即http://example.com/scripts/gallery.js时,我想将文件放在/var/www/shared_files/gallery.js而不是/var/www/xxx/gallery.js。
我发现这个问题的第一个解决方案是一个htaccess解决方案:
RewriteRule ^gallery.js ../shared_files/gallery.js
只有通过服务器IP请求所有文件,即只有http://11.11.0.111/xxx/gallery.js才能使用
第二个解决方案是PHP解决方案:
if(* is 404 *)
{
if(file_exists("/var/www/shared_files/* the requested file name *"))
{
if(strpos(* the requested file name *, ".js") !== false)
header("Content-type: text/javascript");
require_once("/var/www/shared_files/* the requested file name *");
die();
}
}
从长远来看,这个dosnt似乎是一个很好的解决方案,所以有人知道更好的解决方案吗?
答案 0 :(得分:1)
由于您的共享文件位于VirtualHost之外的位置,因此您应该通过自己的域/子域访问它们。
因此,您应该链接http://shared.example.com/gallery.js(其中shared.example.com是一个子域,链接到您的共享文件文件夹)。