自定义404错误页面 – 仅适用于PHP页面

我有一个404个人化的htaccess页面

ErrorDocument 404 /404.php 

它工作正常,但它需要所有的.jpg,.js,.css等…
我希望它只是采取.php,并为所有其他人做一个正常的404错误。

我没有在任何地方find这个选项。

非常感谢你。

不知道,但试试这个:

 <Files ~ "\.php$"> ErrorDocument 404 /404.php </Files> 

来自Files Directive文档的报价:

<Files>指令通过文件名来限制所附指令的范围。

有几个可能的方法来做到这一点,但我会做以下其中一项:

您可以使用@LazyOne建议的mod_rewrite将只有.php扩展名的文件重定向到您的自定义文档:

 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f # Only redirect to error for files that don't exist RewriteRule ^(.*)\.php$ /404.php [L] 

或者,您可以像以前那样通过PHP错误处理程序指示所有内容,并使用PHP确定请求的资源是否为PHP脚本:

 <?php if (strtolower(substr($_SERVER['SCRIPT_URL'], -4)) != '.php') { // If the requested resource does not have a .php extension, include the standard error doc and exit include '404.html'; exit; } // Handle .php 404s here 

第二种方法的缺点是您可能需要重写标准错误文档,以便使用PHP获取动态信息以显示给用户,以及请求的资源路径。

使用$_SERVER['REQUEST_URI'] ,你可以很容易地检查导致错误的文件的结尾,然后把一个标题放到一个正常的404,如果它不符合你的需要,或者只是渲染一个不同的404

把这个放在你的404.php文件中

 $bad_url = $_SERVER['REQUEST_URI']; $bad_extension = substr(strrchr($bad_url,'.'),1); if($bad_extension != "php"){ //Not PHP }else{ //PHP }