我有一个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 }