经常使用帝国的朋友都知道,如果用帝国不生成静态页面,改用动态页面时,当删除了一条信息后,在点击这个链接时会出现“此信息不存在”,百度抓取时状态码还是正常的200,那么百度爬虫还会认为此页面为正常页面,但当我们删除后,我们实际是要告诉百度百度此页面已不存在,也就是状态码为404,而帝国的大神们没有对此做除理,那么就需要我们自已来除理了。
我们分析动态页面后知道正常情况当ID不存在时会触发printerror函数,那么我们就可以真对printerror进行除理,当我们深入研究后发现一般情况下出发的函数传入的参数如下:
if(!$classid||!$id||!$mid||!$tbname||InfoIsInTable($tbname))
{
printerror('此信息不存在','',1,0,1);
}
printerror('错误提示信息','提示错误后跳转的URL(可为空)','错误提示样式','','');
那么错误提示样式为1,我们可以从e/class/connect.php中找到printerror,并可以看到下内容:
//错误提示
function printerror($error="",$gotourl="",$ecms=0,$noautourl=0,$novar=0){
global $empire,$editor,$public_r,$ecms_config;
if($editor==1){$a="../";}
elseif($editor==2){$a="../../";}
elseif($editor==3){$a="../../../";}
else{$a="";}
if($ecms==1||$ecms==9)
{
$a=ECMS_PATH.'e/data/';
}
if(strstr($gotourl,"(")||empty($gotourl))
{
if(strstr($gotourl,"(-2"))
{
$gotourl_js="history.go(-2)";
$gotourl="javascript:history.go(-2)";
}
else
{
$gotourl_js="history.go(-1)";
$gotourl="javascript:history.go(-1)";
}
}
else
{$gotourl_js="self.location.href='$gotourl';";}
if(empty($error))
{$error="DbError";}
if($ecms==9)//前台弹出对话框
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
echo"<script>alert('".$error."');".$gotourl_js."</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==8)//后台弹出对话框
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
echo"<script>alert('".$error."');".$gotourl_js."</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==7)//前台弹出对话框并关闭窗口
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
echo"<script>alert('".$error."');window.close();</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==6)//后台弹出对话框并关闭窗口
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
echo"<script>alert('".$error."');window.close();</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==0)
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
@include($a."message.php");
}
else
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
@include($a."../message/index.php");
}
db_close();
$empire=null;
exit();
}
既然找到了错误时输出的内容那么我们就可以在输出内容的最前面加入以下内容:
@header("HTTP/1.0 404 Not Found.");
@header("status: 404 Not Found");
至于为什么要在最前面加大家可以去查下header使用手册,这里就不在细说了。
修改后的内容如下:
//错误提示
function printerror($error="",$gotourl="",$ecms=0,$noautourl=0,$novar=0){
global $empire,$editor,$public_r,$ecms_config;
if($editor==1){$a="../";}
elseif($editor==2){$a="../../";}
elseif($editor==3){$a="../../../";}
else{$a="";}
if($ecms==1||$ecms==9)
{
$a=ECMS_PATH.'e/data/';
}
if(strstr($gotourl,"(")||empty($gotourl))
{
if(strstr($gotourl,"(-2"))
{
$gotourl_js="history.go(-2)";
$gotourl="javascript:history.go(-2)";
}
else
{
$gotourl_js="history.go(-1)";
$gotourl="javascript:history.go(-1)";
}
}
else
{$gotourl_js="self.location.href='$gotourl';";}
if(empty($error))
{$error="DbError";}
if($ecms==9)//前台弹出对话框
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
echo"<script>alert('".$error."');".$gotourl_js."</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==8)//后台弹出对话框
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
echo"<script>alert('".$error."');".$gotourl_js."</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==7)//前台弹出对话框并关闭窗口
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
echo"<script>alert('".$error."');window.close();</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==6)//后台弹出对话框并关闭窗口
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
echo"<script>alert('".$error."');window.close();</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==0)
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
@include($a."message.php");
}
else
{
@header("HTTP/1.0 404 Not Found.");
@header("status: 404 Not Found");
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
@include($a."../message/index.php");
}
db_close();
$empire=null;
exit();
}
我们分析动态页面后知道正常情况当ID不存在时会触发printerror函数,那么我们就可以真对printerror进行除理,当我们深入研究后发现一般情况下出发的函数传入的参数如下:
if(!$classid||!$id||!$mid||!$tbname||InfoIsInTable($tbname))
{
printerror('此信息不存在','',1,0,1);
}
printerror('错误提示信息','提示错误后跳转的URL(可为空)','错误提示样式','','');
那么错误提示样式为1,我们可以从e/class/connect.php中找到printerror,并可以看到下内容:
//错误提示
function printerror($error="",$gotourl="",$ecms=0,$noautourl=0,$novar=0){
global $empire,$editor,$public_r,$ecms_config;
if($editor==1){$a="../";}
elseif($editor==2){$a="../../";}
elseif($editor==3){$a="../../../";}
else{$a="";}
if($ecms==1||$ecms==9)
{
$a=ECMS_PATH.'e/data/';
}
if(strstr($gotourl,"(")||empty($gotourl))
{
if(strstr($gotourl,"(-2"))
{
$gotourl_js="history.go(-2)";
$gotourl="javascript:history.go(-2)";
}
else
{
$gotourl_js="history.go(-1)";
$gotourl="javascript:history.go(-1)";
}
}
else
{$gotourl_js="self.location.href='$gotourl';";}
if(empty($error))
{$error="DbError";}
if($ecms==9)//前台弹出对话框
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
echo"<script>alert('".$error."');".$gotourl_js."</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==8)//后台弹出对话框
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
echo"<script>alert('".$error."');".$gotourl_js."</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==7)//前台弹出对话框并关闭窗口
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
echo"<script>alert('".$error."');window.close();</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==6)//后台弹出对话框并关闭窗口
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
echo"<script>alert('".$error."');window.close();</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==0)
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
@include($a."message.php");
}
else
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
@include($a."../message/index.php");
}
db_close();
$empire=null;
exit();
}
既然找到了错误时输出的内容那么我们就可以在输出内容的最前面加入以下内容:
@header("HTTP/1.0 404 Not Found.");
@header("status: 404 Not Found");
至于为什么要在最前面加大家可以去查下header使用手册,这里就不在细说了。
修改后的内容如下:
//错误提示
function printerror($error="",$gotourl="",$ecms=0,$noautourl=0,$novar=0){
global $empire,$editor,$public_r,$ecms_config;
if($editor==1){$a="../";}
elseif($editor==2){$a="../../";}
elseif($editor==3){$a="../../../";}
else{$a="";}
if($ecms==1||$ecms==9)
{
$a=ECMS_PATH.'e/data/';
}
if(strstr($gotourl,"(")||empty($gotourl))
{
if(strstr($gotourl,"(-2"))
{
$gotourl_js="history.go(-2)";
$gotourl="javascript:history.go(-2)";
}
else
{
$gotourl_js="history.go(-1)";
$gotourl="javascript:history.go(-1)";
}
}
else
{$gotourl_js="self.location.href='$gotourl';";}
if(empty($error))
{$error="DbError";}
if($ecms==9)//前台弹出对话框
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
echo"<script>alert('".$error."');".$gotourl_js."</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==8)//后台弹出对话框
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
echo"<script>alert('".$error."');".$gotourl_js."</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==7)//前台弹出对话框并关闭窗口
{
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
echo"<script>alert('".$error."');window.close();</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==6)//后台弹出对话框并关闭窗口
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
echo"<script>alert('".$error."');window.close();</script>";
db_close();
$empire=null;
exit();
}
elseif($ecms==0)
{
@include $a.LoadLang("pub/message.php");
$error=empty($novar)?$message_r[$error]:$error;
@include($a."message.php");
}
else
{
@header("HTTP/1.0 404 Not Found.");
@header("status: 404 Not Found");
@include $a.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
@include($a."../message/index.php");
}
db_close();
$empire=null;
exit();
}
本站文章均为九脑科技摘自权威资料,书籍,或网络原创文章,如有版权纠纷或者违规问题,请即刻联系我们删除,我们欢迎您分享,引用和转载,我们谢绝直接复制和抄袭!感谢...
猜你喜欢
联络方式:
电话:13888888888
邮箱:139404000@qq.com
微信公众号
新浪微博
扫描名片
我们猜你喜欢
-
什么是本地区关键词全国性关键词?
地区性关键词:是指关键词中带有地区名称,如:关键词为“深圳网站建设公司”,该词为地区性关键词,因为关键词中出现了地区名称“深圳”。全国性关键词:是指关键...
-
百度惊雷算法首推,快排行业将退出SEO江湖
近几年,百度在保障用户体验提升内容生态良性发展方面下了很多功夫,从打击外链、采集、站群、页面友好度等方面都经过了多次的算法调整,例如:青藤算法、绿萝算法、飓风算法、清风...
-
刷屏朋友圈的“跳一跳” 小程序究竟有多火热?
这两天想必大家在刷朋友圈时都看到了一款名为“跳一跳”的游戏,2017年12月28日,微信通过旗下多个公众号宣布上线“小游戏”,目前,iOS和安卓的用户,只需升级...
-
destoon7.0 手机链接在电脑上访问直接跳转到PC页面的修改方法
修改include/mobile.inc.php 第八行代码 原代码:if(is_pc() && strpos($DT_URL, ‘device.php’) === false) dheader( DT_PATH.’api/mobile.php?act...
-
响应式(自适应)网站的优点,缺点大PK
近年来,各种大屏幕移动设备的普及,响应式网站也受到了更多人的青睐。甚至大多数的人认为,响应式网站是实现友好移动目标,更好、更快、更省的方案。通俗的说,就是一个网站可以兼容...