访问 Web 服务器文档根文件夹上方的文件


Accessing files above the web server document root folder

在其他地方阅读时,我遇到了将我不希望公众访问的文件放在我的 Web 根文件夹上方的概念。在我的本地 WAMP 堆栈上执行此操作没有问题,但是一旦转移到我的 VPS(运行 Ubuntu 10.04.4 LTS),PHP 脚本只能看到根目录下的文件。

我的子域的虚拟主机设置:

<VirtualHost *:80>  
# Admin email, Server Name (domain name), and any aliases
ServerAdmin #####@####.com
ServerName admin.########.com
ServerAlias www.admin.########.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html index.php admin.php
DocumentRoot /srv/www/#######.com/public_html/admin/web_pages
<Directory /srv/www/#######.com/public_html/admin/web_pages>
    Options +Indexes
    AllowOverride All
</Directory>
# Log file locations
LogLevel warn
ErrorLog /srv/www/########.com/logs/error.log
CustomLog /srv/www/########.com/logs/access.log combined
</VirtualHost>

给定日志错误:文件不存在:/srv/www/######.com/public_html/admin/web_pages/css,引用:http://www.admin.#######.com/

(我的 css 文件夹位于web_pages文件夹上方,通过以下路径调用:../css/####.css)

这是我的配置设置有问题,还是我试图做一些我不应该做的事情,而是在我的 Web 根目录下拥有我需要的一切?我真的很希望常量文件和应用程序逻辑无法访问,但 css、html 页面和图像都可以。

如果要授予对 Web 根目录上方某些文件夹的公共访问权限,可以使用别名指令:

Alias /css/ "/srv/www/#######.com/public_html/admin/css"
<Directory /srv/www/#######.com/public_html/admin/css>
# some configuration directives here   
</Directory>

之后,您的css文件将通过新路径访问(不带..):/css/####.css

不要忘记打开mod_alias Apache 模块