我安装了 Apache2 和 PHP5。我的DocumentRoot
是 /var/www/。所有.php
文件都由其子目录.html
提供。但是,当我请求图像时,我会收到通知。/
.png
Forbidden
我想/static/
为静态内容调度一个特定的目录。
我应该如何编辑 Apache 的配置文件以便能够查看静态内容/static/
?
答案1
我不确定我是否理解了这个问题,但你可以:
如果您想要提供不是来自 /var/www/static 的静态文件,请使用:
Alias /static/ /somewhere/somewhere/dir/
如果您的静态目录已经在 /var/www/static 中,并且您收到禁止错误 - 请确保运行 apache 的用户能够读取这些文件:
chown www-data:www-data -R /var/www/static
应该修复可读性问题。根据发行版用户名可能会有所不同。通过运行来检查ps faux|grep apache
答案2
Apache 允许在每个目录的基础上指定 php.ini 设置,因此您应该能够在 httpd.conf 文件中使用类似下面的内容来禁用用户目录的 php:
<目录 /home/*/public_html> php_admin_flag 引擎关闭 </目录>
您也可以在“.htaccess”中设置这些
答案3
为了使文件系统上的目录内容“可用于网络”,您必须有一个Directory
指令来封装它,并且您的网络服务器执行的用户必须能够访问这些文件。大多数默认安装都Directory
设置了一个目录,所有内容都位于该目录中(即 /var/www/)。
这不是强制性的,只要您Directory
为它定义了另一个部分,您就可以从其他目录下获取内容。您可以像这样获取多个目录,并通过指令使其看起来像一棵快乐树Alias
。
您还可以禁止提供其他“webservable”树的某些部分,例如防止包含包含 DB 连接字符串、密码、用户名等的文件。
相同规则适用于脚本,仅带有ScriptAlias
指令。