我可以访问安装了 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