返回码200
发布于:2022-01-17 09:50:54
#1 chunjiao2012
请教:
现网站有个情况:网页错误,状态返回码都为200;加了404页面跳转后,返回码为302。现在需要所有错误的页面的返回码为404,而非200,怎么设置呀?
2014-08-04 11:29:07
#2 jake
'dispatcher_error' => "import(APP_PATH.'/404.html');exit();",
把里面改一下,比如说
'dispatcher_error' => "my404();exit();",
执行个my404()的函数,然后这函数里面加上 header 输出404。
2014-08-04 13:30:44
#3 chunjiao2012
函数my404()写在控制器main.php里面吗???还有就是原理是怎么的?
因为之前看见你在别的回复里面说是因为:在.htaccess里面设置,使得404转向index.php,才导致无404的,怎么通过你上述方法就把404恢复了呢?
2014-08-04 14:28:18
#4 jake
my404()要写在全局位置,比如说index.php里面,或者index.php包含一个文件里面这样。
因为服务器转向把404全部转到index.php上面了,上述的方法是index.php检查如果没有匹配的路由规则,那么就会执行dispatcher_error里面的代码。
2014-08-04 16:05:03
#5 chunjiao2012
这样做之后,页面状态返回码还是302 ,而不是404,
我是希望不要将404错误跳转到index.php,而是直接跳转到404页面,这样它页面的返回码才是404。
然后搜索引擎才知道这个页面就是404无效的页面。
请问应该怎么做呢?
2014-08-04 16:35:17
#6 jake
function my404(){
header("HTTP/1.0 404 Not Found");
}
my404是这样的函数,输出头肯定是404的。
不希望404转向到index.php,可以在服务器上面设置不用urlrewrite,那么这样就不会有转向了
2014-08-04 17:17:04
#7 JeremyVan
我也遇到URL的问题,好棘手{:soso_e101:},希望所有错误的URL能跳到404页面,案例一就是我想要的效果案例一:
speedphp网站的一个链接:
http://www.speedphp.com/thread-3881-1-8.html 我把“3881”改成“abcd”能跳到404;
我的网站用上述方式随意修改一个参数就如下图显示空白;
在网站某些页面后加后缀如"_abcdd"这种形式,网站没有报错还留在之前的页面上。
谢谢指教了{:soso_e121:}
2014-08-04 17:53:38
#8 jake
加一下 dispatcher_error这个配置
2014-08-04 21:03:09
#9 JeremyVan
但我已经加了 dispatcher_error配置, dispatcher_error是处理路由错误的函数
2014-08-05 10:12:17
#10 JeremyVan
我的小站在部署模式下显示数据库错误信息“SELECT COUNT(id_majr) as sp_counter FROM (select id_majr,ename_majr from tb_majo) sp_tmp_table_pager1
执行错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and ctry_univ = 7 ) sp_tmp_table_pager1' at line 8”
2014-08-05 10:13:11
#11 JeremyVan
切换到r发布模式页面变成空白,没有报错和也没有跳转到404。我在之前评论里所描述的把url中的“3881”改成“abcd”产生的错误不属于路由错误吧。(评论一直提交不了,就分开发了)感谢jake!
2014-08-05 10:14:07
#12 jake
spPager有使用范围的,具体看手册
2014-08-05 10:15:08
#13 chunjiao2012
我想上一楼的意思是:在
改变地址 url 的时候,会出现两张错误。
一 :路由错误;
二:数据库方面的错误;
而配置'dispatcher_error',只能将第一种错误转向404.
2014-08-05 12:43:50
#14 chunjiao2012
我想上一楼的意思是:在
改变地址 url 的时候,会出现两张错误。
一 :路由错误;
二:数据库方面的错误;
而配置'dispatcher_error',只能将第一种错误转向404.
2014-08-05 12:43:55
#15 chunjiao2012
一:路由错误
二:数据库执行错误
2014-08-05 12:45:27
#16 jake
数据库错误,或者一般的执行错误,可以配置sp_error_throw_exception,然后在index.php里面接收抛出错误来显示。
如果是php执行错误,那只能在服务器层面修改500提示了。
2014-08-05 14:22:11
#17 JeremyVan
设置 sp_error_throw_exception=true后,
如何在index.php中接收抛出的异常呀?怎么写呀?新手一枚,谢谢啦!
2014-08-06 09:40:20
#18 jake
define("APP_PATH",dirname(__FILE__));
define("SP_PATH",dirname(__FILE__).'/SpeedPHP');
$spConfig = array(
);
require(SP_PATH."/SpeedPHP.php");
try{
spRun();
} catch (Exception $e) {
echo "这里是一个错误";
}
2014-08-06 10:22:49
#19 JeremyVan
非常谢谢!
2014-08-06 10:47:07