Apache2 + PHP 静态目录

Apache2 + PHP 静态目录

我安装了 Apache2 和 PHP5。我的DocumentRoot是 /var/www/。所有.php文件都由其子目录.html提供。但是,当我请求图像时,我会收到通知。/.pngForbidden

我想/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指令。

相关内容