为什么自定义404 PHP错误页面仅在线用于涉及不存在目录的URL,而不管文件是否存在?

时间:2018-09-14 07:59:03

标签: php .htaccess http-status-code-404

我的自定义404错误页面似乎只能在线处理包含不存在目录的URL。如果我只有一个不存在的文件(在现有目录树中),则得到-而不是所需的自定义404页面-带有“找不到文件”的空白页面。似乎,无论我的URL中是否有不存在的文件或现有的文件,仅当URL中某处不存在/拼写错误的目录时,我才会获得自定义404页面。脱机,但是在Xampp上可以正常工作。有人能为我指出我做错了什么正确的方向吗?

这是我的“ .htaccess”的样子,将其与自定义错误页面一起放在根目录中:

ErrorDocument 400 /error404.php
ErrorDocument 401 /error404.php
ErrorDocument 403 /error404.php
ErrorDocument 404 /error404.php
ErrorDocument 405 /error404.php
ErrorDocument 408 /error404.php
ErrorDocument 500 /error404.php
ErrorDocument 502 /error404.php
ErrorDocument 504 /error404.php

<IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteCond %{HTTPS} !=on
     RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,QSA]
</IfModule>

更新:看来造成我问题的原因是文件扩展名“ .php”。如果我用扩展名“ .php”调用不存在的文件,则会得到“找不到文件”。如果我在查询中使用扩展名“ .html”,则自定义404错误页面可以正常运行。

example with html extention

example with php extention

托管服务提供商的技术支持建议查看包含扩展的我的配置。我不确定应该在哪里诚实。也许有人可以缩小这个范围?

我必须对此做进一步测试,但是.htaccess文件中的以下几行可能会解决问题:

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

0 个答案:

没有答案