2017-05-19 157 views
0

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

的.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 

回答

0

你重定向到根(/error.php)DocumentRoot的的选中的虚拟主机,检查它是否在该DocumentRoot上的error.php。

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

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

检查的Apache配置目录有类似

AllowOverride none 

如果是的话,你应该改变它允许.htaccess文件覆盖一些配置。 ErrorDocument指令需要的FileInfo所有这样的:

AllowOverride FileInfo