Apache .htaccess 不起作用

Apache .htaccess 不起作用

我可以访问安装了 apache 的 Ubuntu 机器,并使用 PuTTy 连接到该机器。

由于某种原因,我的.htaccess 文件无法工作,它包含以下内容:

ErrorDocument 404 /handler.php

它不会转到 handler.php 页面,而是打印出常规的 Not Found apache 页面。

我在 Google 上搜索过,所能找到的信息都是确保在你的 apache 配置中将 AccessFileName 设置为 .htaccess,并将 AllowOverride 设置为 All。

我对我的配置文件(/etc/apache2/apache2.conf)进行了以下更改,现在它包含以下内容:

AccessFileName .htaccess

<Directory />
    AllowOverride All
    #AllowOverride None
</Directory>

我重新启动了 apache(sudo /etc/init.d/apache2 restart),但仍然遇到完全相同的问题。

抱歉,我对 Linux 和 Apache Config 不太熟悉。

答案1

grep -R AllowOverride /etc/apache2:尝试查看是否有任何活动配置文件(在 conf.d 或 sites-enabled 中)没有对您的 webroot 的父目录施加一些限制(对于 / 来说没问题,但如果有人可以对 /var/www/mysite 施加限制)。您可以通过设置拒绝所有内部内容来检查 .htaccess 是否被读取(您应该被拒绝访问)

答案2

Apache 无法找到您的 handler.php 文件。

该文件应驻留在 VirtualHost(网站)的 DocumentRoot 文件夹中。

当然可以,并且它与 .htaccess 文件位于同一目录中

这可能是您的问题。该指令中的路径始终相对于 DocumentRoot 文件夹,而不是 .htaccess 文件的位置。

检查网址http://www.example.com/handler.php因为这是您告诉 Apache 重定向到的 URL。

http://httpd.apache.org/docs/2.2/mod/core.html#errordocument

相关内容