从另一个父目录请求文件

时间:2012-02-20 12:45:09

标签: php .htaccess mod-rewrite

假设我们有一台运行多个虚拟主机的服务器。某些文件和目录在这些虚拟主机之间共享,例如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似乎是一个很好的解决方案,所以有人知道更好的解决方案吗?

  • 在TerryE的评论后编辑

1 个答案:

答案 0 :(得分:1)

由于您的共享文件位于VirtualHost之外的位置,因此您应该通过自己的域/子域访问它们。

因此,您应该链接http://shared.example.com/gallery.js(其中shared.example.com是一个子域,链接到您的共享文件文件夹)。