请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 4377|回复: 18

返回码200

[复制链接]
发表于 2014-8-4 11:29:07 | 显示全部楼层 |阅读模式
请教:
现网站有个情况:网页错误,状态返回码都为200;加了404页面跳转后,返回码为302。现在需要所有错误的页面的返回码为404,而非200,怎么设置呀?

发表于 2014-8-4 13:30:44 | 显示全部楼层
'dispatcher_error' => "import(APP_PATH.'/404.html');exit();",

把里面改一下,比如说

'dispatcher_error' => "my404();exit();",

执行个my404()的函数,然后这函数里面加上 header 输出404。
 楼主| 发表于 2014-8-4 14:28:18 | 显示全部楼层
jake 发表于 2014-8-4 13:30
'dispatcher_error' => "import(APP_PATH.'/404.html');exit();",

把里面改一下,比如说

函数my404()写在控制器main.php里面吗???还有就是原理是怎么的?
因为之前看见你在别的回复里面说是因为:在.htaccess里面设置,使得404转向index.php,才导致无404的,怎么通过你上述方法就把404恢复了呢?
发表于 2014-8-4 16:05:03 | 显示全部楼层
chunjiao2012 发表于 2014-8-4 14:28
函数my404()写在控制器main.php里面吗???还有就是原理是怎么的?
因为之前看见你在别的回复里面说是因 ...

my404()要写在全局位置,比如说index.php里面,或者index.php包含一个文件里面这样。

因为服务器转向把404全部转到index.php上面了,上述的方法是index.php检查如果没有匹配的路由规则,那么就会执行dispatcher_error里面的代码。
 楼主| 发表于 2014-8-4 16:35:17 | 显示全部楼层
jake 发表于 2014-8-4 16:05
my404()要写在全局位置,比如说index.php里面,或者index.php包含一个文件里面这样。

因为服务器转向把4 ...

这样做之后,页面状态返回码还是302  ,而不是404,

我是希望不要将404错误跳转到index.php,而是直接跳转到404页面,这样它页面的返回码才是404。


然后搜索引擎才知道这个页面就是404无效的页面。


请问应该怎么做呢?
发表于 2014-8-4 17:17:04 | 显示全部楼层
function my404(){
header("HTTP/1.0 404 Not Found");
}

my404是这样的函数,输出头肯定是404的。

不希望404转向到index.php,可以在服务器上面设置不用urlrewrite,那么这样就不会有转向了
发表于 2014-8-4 17:53:38 | 显示全部楼层
我也遇到URL的问题,好棘手{:soso_e101:},希望所有错误的URL能跳到404页面,案例一就是我想要的效果案例一:

URL截图

URL截图


speedphp网站的一个链接:http://www.speedphp.com/thread-3881-1-8.html 我把“3881”改成“abcd”能跳到404;
404.jpg


我的网站用上述方式随意修改一个参数就如下图显示空白;
mypage.jpg

在网站某些页面后加后缀如"_abcdd"这种形式,网站没有报错还留在之前的页面上。

谢谢指教了{:soso_e121:}


发表于 2014-8-4 21:03:09 | 显示全部楼层
JeremyVan 发表于 2014-8-4 17:53
我也遇到URL的问题,好棘手,希望所有错误的URL能跳到404页面,案例一就是我想要的效果案例一 ...

加一下 dispatcher_error这个配置
发表于 2014-8-5 10:12:17 | 显示全部楼层
但我已经加了 dispatcher_error配置, dispatcher_error是处理路由错误的函数
发表于 2014-8-5 10:13:11 | 显示全部楼层
我的小站在部署模式下显示数据库错误信息“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”
您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-1-21 08:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表