我有一个带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" />
或者,我意识到我可以将静态文件放在域中,只需指向它们,但我想知道如何使其他配置工作。
答案 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”文件夹。