我已经安装了 Cent Os 6.4 -Final 版本并设置了 PHP Web 开发的环境。
我的应用程序使用 .htaccess 进行 url 重写并拒绝直接访问文件。
我的 httpd 配置文件 - /etc/httpd/conf/httpd.conf 如下,
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
当我改变AllowOverride 无到允许覆盖全部,它要求进行身份验证。所以它对我来说不起作用,并给出如下错误,
This server could not verify that you are authorized to access the document requested.
您提供了错误的凭证(例如,错误的密码),或者您的浏览器不了解如何提供所需的凭证。
我的 .htaccess 看起来像,
deny from all
答案1
如果AllowOverride None
在 httpd.conf 中设置了 .htaccess 文件,则该文件会被完全忽略。因此,您必须更改该设置。
当允许 .htaccess 文件时,apache 将从 DocumentRoot 向下检查每个目录是否存在 .htaccess 文件并在那里应用设置,然后再下降到下一个目录并在那里查找 .htaccess 文件。
例如,./www/.htaccess
设置为“拒绝所有人”,尝试访问 /scripts/test/hello-world.php 的访问者将被拒绝,尽管 ./www/scripts/test/.htaccess
可能已设置为“允许所有人”。
因此,如果不是您的 PHP 脚本要求身份验证,您可能需要检查更高级别目录中的 .htaccess 文件。