如何在Dreamhost上为多个域创建共享文件夹

时间:2010-10-07 14:12:58

标签: php linux lamp

我有一个带Dreamhost的虚拟专用服务器。我正在尝试创建一个我所有域都可以访问的共享文件夹。在我想放置PHP类的文件夹中,甚至是javascripts等静态文件。

我在与我的域文件夹相同的级别上创建了一个目录。我想通过类似的方式调用文件...... /home/username/shared/file.php。然而,这不起作用,我希望有一些魔法(比如.htaccess)可以使这个工作。

编辑:哎呀,好的,我可以使用上面的方法包含PHP文件。如何在同一目录中包含静态文件,如Javascript,CSS,图像等?

这有效:

<?php include('/home/username/shared/file.php'); ?>

这不起作用:

<link rel="stylesheet" type="text/css" href="/home/username/shared/reset.css" media="screen" />

或者,我意识到我可以将静态文件放在域中,只需指向它们,但我想知道如何使其他配置工作。

2 个答案:

答案 0 :(得分:0)

你应该对<link rel="stylesheet" type="text/css" href="/home/username/shared/reset.css" media="screen" />不起作用感到高兴。如果可以的话,你会有一个很大的安全漏洞。

正确的方法是将symlibk创建到文档根目录中的共享目录,或使用别名。

符号链接方法

在shell中运行以下命令:

ln -s /home/username/shared /home/target/

它将创建一个名为/home/target/shared的符号链接,指向/home/username/shared。您可能需要在服务器配置(或Options +FollowSymLinks文件)

中添加.htaccess指令

别名方法

此方法需要更改服务器配置(例如httpd.conf)。向其添加Alias指令:

Alias /shared /home/username/target

注意:这仅用于通过服务器的请求(例如http://example/shared/reset.css),而不用于PHP文件。在PHP文件中,您必须使用完整路径(/home/username/shared/file.php


您选择哪种方法取决于您。后者更容易配置,因为您不必担心权限/所有权。如果您确实需要使用/home/target/shared/file.php,则可以使用前者。

答案 1 :(得分:0)

包括静态文件(如images,js,css)不是由服务器解析,而是由客户端解析。 因此,当客户端看到/home/user/shared/reset.css时,他实际上会尝试加载它:www.domain.com/home/user/shared/reset.css

您可以做的最简单的事情就是在托管上的某处创建一个文件夹,然后将其链接到域文件夹中的文件夹。

例如,您有这样的结构:

/home/
   user/
      domain1/
      domain2/
      domain3/

您可以在/ home / user下轻松创建静态内容的文件夹,例如/ home / user / static_files然后对于每个域,只需通过控制台(ssh)链接文件夹一次:

ln -s /home/user/static_files /home/user/domain1/static_files
ln -s /home/user/static_files /home/user/domain2/static_files
ln -s /home/user/static_files /home/user/domain3/static_files

上面的行将创建所谓的符号链接。这意味着它将只在域文件夹中创建快捷方式,当您编辑主文件夹(/ home / user / static_files)中的文件时,更改将在域文件夹中可用。

现在只需将代码调整为如此:

<img src="/static_files/image.png" />
<script src="/static_files/somescript.js"></script>
<link rel="stylesheet" type="text/css" src="/static_files/reset.css" />

这只会查找您域名根目录下的“static_files”文件夹。