htaccess:尝试 ErrorDocument 时出现 404 Not Found 错误

Posted

技术标签:

【中文标题】htaccess:尝试 ErrorDocument 时出现 404 Not Found 错误【英文标题】:htaccess: 404 Not Found Error While trying ErrorDocument 【发布时间】:2017-10-19 00:44:00 【问题描述】:

如果发生错误但未找到错误,我正在使用 .htaccess 文件重定向到错误页面。我正在测试 error.php 页面是否正常工作,但我得到了以下结果。尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。

.htaccess

RewriteEngine On

ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php
ErrorDocument 502 /error.php
ErrorDocument 504 /error.php

error.php

<?php

switch($_SERVER["REDIRECT_STATUS"])
    case 400:
        $title = "400 Bad Request";
        $description = "The request can not be processed due to bad syntax";
    break;

    case 401:
        $title = "401 Unauthorized";
        $description = "The request has failed authentication";
    break;

    case 403:
        $title = "403 Forbidden";
        $description = "The server refuses to response to the request";
    break;

    case 404:
        $title = "404 Not Found";
        $description = "The resource requested can not be found.";
    break;

    case 500:
        $title = "500 Internal Server Error";
        $description = "There was an error which doesn't fit any other error message";
    break;

    case 502:
        $title = "502 Bad Gateway";
        $description = "The server was acting as a proxy and received a bad request.";
    break;

    case 504:
        $title = "504 Gateway Timeout";
        $description = "The server was acting as a proxy and the request timed out.";
    break;

?>

结果:

Not Found

The requested URL /myweb/faq.html was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/7.0.13 Server at 192.168.5.120 Port 80

【问题讨论】:

【参考方案1】:

您正在将 重定向到所选虚拟主机的 DocumentRoot 的根目录 (/error.php),检查 error.php 是否在该 DocumentRoot 上。

检查 Apache 的日志文件以查看其他错误。

看来不是你的问题,但你需要正确设置 AllowOverride。

检查Apache配置上的目录是否有类似的东西

AllowOverride none

如果是,您应该更改它以允许 .htaccess 文件覆盖某些配置。 ErrorDocument 指令需要像这样的 FileInfoAll

AllowOverride FileInfo

【讨论】:

【参考方案2】:

您正在重定向到所选虚拟主机的 DocumentRoot 的根目录 (/error.php),检查 error.php 是否在该 DocumentRoot 上。

检查 Apache 的日志文件以查看其他错误。

这似乎不是你的问题,但你需要正确设置 AllowOverride。

检查Apache配置上的目录是否有类似的东西

【讨论】:

以上是关于htaccess:尝试 ErrorDocument 时出现 404 Not Found 错误的主要内容,如果未能解决你的问题,请参考以下文章

单个 ErrorDocument 指令以捕获所有错误 (.htaccess)

.htaccess - ErrorDocument 与 RewriteRule

尝试使用 ErrorDocument 处理请求时出现 500 内部服务器错误

使用子目录中的 404 ErrorDocument

.htaccess 错误文档重定向

服务器无法读取htaccess文件