以下是我的服务器上目录的布局(我继承了它,目前无法更改) -
/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/*
也会被删除。