Htaccess 404重定向适用于.html扩展名,但不适用.php扩展名


htaccess 404 redirect works for .html extension but not .php extension

我已经做了一个自定义的404页面,并插入到我的htaccess文件:

ErrorDocument 404 /404.php

当我测试一个没有扩展名或。html扩展名的url时,错误直接工作正常。但是,当我输入一个扩展名为.php的url时,会弹出一个空白页面,提示"No input file specified."。

我要做什么,使我的自定义404页面弹出的。php文件扩展名,以及?

当PHP在服务器中被编译为CGI Binary时,就会发生这种情况。在这种情况下,即使您定义了apache 404,对PHP的请求也会传递给CGI binary,当没有找到要处理的文件(No input file specified)时,会给出此错误。

这个问题的解决方案将根据各种其他配置参数而有所不同,但本质上你应该尝试做的是首先检查URL,如果它不存在,将其转换为非php URL,以便规则启动并显示正确的404。

未测试,但在以下行中有:

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^.+'.php$ /non_existant_file

您需要设置目录

RewriteEngine on
ErrorDocument 404 http://www.yoursite.com/404.php

如果你是本地的,那么像这样

RewriteEngine on
ErrorDocument 404 directory/404.php