我有一个个性化页面404 htaccess的自定义404错误页面 - 为PHP页面只
ErrorDocument 404 /404.php
它工作正常,但它需要的一切.JPG,.js文件,的CSS等...
我希望它只是采取.php并为所有其他人做一个正常的404错误。
我没有在任何地方找到该选项。
非常感谢。
我有一个个性化页面404 htaccess的自定义404错误页面 - 为PHP页面只
ErrorDocument 404 /404.php
它工作正常,但它需要的一切.JPG,.js文件,的CSS等...
我希望它只是采取.php并为所有其他人做一个正常的404错误。
我没有在任何地方找到该选项。
非常感谢。
不知道,但试试这个:
<Files ~ "\.php$">
ErrorDocument 404 /404.php
</Files>
报价从Files Directive文档:
的<文件>指令由filename限制了封闭 指令的范围。
+1它完美的工作,这就是OP要求的 – ShadowScripter 2012-03-09 12:21:50
工作正常!非常感谢您的帮助:-) – user1040899 2012-03-13 02:53:07
有几种可能的途径来这一点,但我会做下列之一:
您可以使用mod_rewrite
,通过@LazyOne的建议,只有文件重定向与.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
}
发送301而不是404看起来很奇怪 – 2012-03-09 12:08:25
你是什么意思“就需要一切”是什么意思? 404是任何未找到的HTTP请求的响应代码,无论这是PHP请求还是图像。 – 2012-03-09 09:19:28
我的意思是,如果我做www.example.com/img/errorimg.jpg他会带我到www.example.com/404.php,我不想那个...... – user1040899 2012-03-09 09:21:24
你可以尝试使用URL重写(mod_rewrite)实现 - 将请求重定向到任何不存在的.php文件到您的自定义404.php - 这是可能的(仅限3或4行) – LazyOne 2012-03-09 09:50:29