链接到网站根目录之外的项目

链接到网站根目录之外的项目

以下是我的服务器上目录的布局(我继承了它,目前无法更改) -

/var/www/<stuff for the web>

/home/project/src/static/<some CSS, some JavaScript, etc.>

为了避免在不同的目录中有重复的文件,我尝试包含一些像这样的文件 -

<link rel="stylesheet" href="/home/project/src/static/css/<file>.css" type="text/css" />
<script src="/home/project/src/static/lib/<file>.js" type="text/javascript"></script>

我尝试以这种方式包含每个文件时都会收到 404 错误。我修改了“主”目录的路径,尝试通过在路径字符串的开头添加内容来从/var/www/到向上遍历,但没有任何效果。/home/..

然后,确认 mod_alias 已安装后,我开始在配置文件中添加路径别名指令:

Alias /home/project/src/static/ /home/project/src/static/
<Directory /home/project/src/static/>
    Order allow,deny
    Allow from all
</Directory> 

重新启动了 Apache,但仍然没有成功。我尝试了带斜杠和不带斜杠的情况。

我已经确认的另一件事是,它open_basedir未在 php.ini 中设置,因为据我所知,设置它会在尝试访问 Web 根目录之外的文件时产生问题。

除了复制目录并将其放在 Web 根文件夹中之外,我还可以做些什么才能使这些文件可从 Web 根目录中找到?

答案1

两个选择...一个是直接使用别名正确地说...第一个路径是相对于 Web 目录的,就像你http://yoursite/static在浏览器中一样,你将使用:

Alias /static/ /home/project/src/static/

或者,如果您不喜欢这样,而宁愿通过更改文件系统层次结构来解决它,请使用绑定挂载。

mkdir /var/www/static/

然后在 fstab 中:

/home/project/src/static/ /var/www/static/ bind defaults 0 0

并应用更改:

mount -a

或一次性安装:

mount --bind /home/project/src/static/ /var/www/static/

绑定挂载并不总是最好或最简单的选择......可能会发生有趣的事情,例如运行rm -rf /var/www/*并且你的/home/project/src/static/*也会被删除。

相关内容