Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[BUG] 〓〓UCH史上最大的优化BUG,404错误被转成200成功状态,导致被百度与Google拔毛〓〓

[复制链接]
guoyan227 发表于 2009-9-23 09:01:04 | 显示全部楼层 |阅读模式
本帖最后由 guoyan227 于 2009-9-23 09:11 编辑

不是吓唬大家,我和我朋友每人一个站,做了一晚上的测试。
如果说的不对,官方或是大家都可以指正,目的让站长们不能再吃这种亏了。太为实在是太重要了。

你的网站被百度与Google拔毛,K掉的原因很可能就是这个。

----------------------------------------------------------------------
具体错误
当访客访问的地址出错时,uch会提示“指定的话题不存在”的信息。
我们知道正常应该是“找不到网页 您要查看的网页可能已被删除、名称已被更改,或者暂时不可用。 ”
它直接向搜索引擎反应“404”代码,提示搜索引擎将出错地址从数据库中删除。
但是搜索引擎百度或Google看到UCH反应的却是正常的网页,只不过没有内容。搜索引擎还会继续收录这个地址。

那么问题来了。我删除了已被收录的100个地址。
当机器人、蜘蛛访问这些地址时,这100个网页的“标题”“关键词”“描述”“内容”一模一样。
我离被K站就不远了。

所以我请求大家帮个忙,一起解决这个问题。
访问不存在的日志、图片等地址时,出现“找不到网页”的提示。

--------------------------------------------------------------------------------------------
 楼主| guoyan227 发表于 2009-9-23 09:27:10 | 显示全部楼层
沙发,留着补充的
回复

使用道具 举报

larryli 发表于 2009-9-23 11:06:06 | 显示全部楼层
修改一下 showmessage 增加一个参数
然后,设置了这个参数,就 header("HTTP/1.1 404 Not Found");
回复

使用道具 举报

larryli 发表于 2009-9-23 11:16:13 | 显示全部楼层
修改 source/function_common.php 找到 function showmessage 下的
  1.         //显示
  2.         if(empty($_SGLOBAL['inajax']) && $url_forward && empty($second)) {
  3.                 header("HTTP/1.1 301 Moved Permanently");
  4.                 header("Location: $url_forward");
  5.         } else {
  6.                 if($_SGLOBAL['inajax']) {
  7.                         if($url_forward) {
  8.                                 $message = "<a href="$url_forward">$message</a><ajaxok>";
  9.                         }
  10.                         //$message = "<h1>".$_SGLOBAL['msglang']['box_title']."</h1><a href="javascript:;" onclick="hideMenu();" class="float_del">X</a><div class="popupmenu_inner">$message</div>";
  11.                         echo $message;
  12.                         ob_out();
  13.                 } else {
  14.                         if($url_forward) {
  15.                                 $message = "<a href="$url_forward">$message</a><script>setTimeout("window.location.href ='$url_forward';", ".($second*1000).");</script>";
  16.                         }
  17.                         include template('showmessage');
  18.                 }
  19.         }
  20.         exit();
复制代码
修改为:
  1.         //显示
  2.         if(empty($_SGLOBAL['inajax']) && $url_forward && empty($second)) {
  3.                 header("HTTP/1.1 301 Moved Permanently");
  4.                 header("Location: $url_forward");
  5.         } else {
  6.                 if(preg_match('/_not_exist$/i', $msgkey)) // [[[
  7.                         header("HTTP/1.1 404 Not Found"); // ]]]
  8.                 if($_SGLOBAL['inajax']) {
  9.                         if($url_forward) {
  10.                                 $message = "<a href="$url_forward">$message</a><ajaxok>";
  11.                         }
  12.                         //$message = "<h1>".$_SGLOBAL['msglang']['box_title']."</h1><a href="javascript:;" onclick="hideMenu();" class="float_del">X</a><div class="popupmenu_inner">$message</div>";
  13.                         echo $message;
  14.                         ob_out();
  15.                 } else {
  16.                         if($url_forward) {
  17.                                 $message = "<a href="$url_forward">$message</a><script>setTimeout("window.location.href ='$url_forward';", ".($second*1000).");</script>";
  18.                         }
  19.                         include template('showmessage');
  20.                 }
  21.         }
  22.         exit();
复制代码
回复

使用道具 举报

幸福摩天轮 发表于 2009-9-23 12:23:33 | 显示全部楼层
您怎么删除了已被收录的100个地址,删除了这么多啊~~~

其实这影响应该不大的吧。好多网站都自定了自己的 404 错误页面。也没见说被K呀。除了404还有503等等。您也可以baidu一下,自定义404页面 ,出了问题就会被转到这个页面,而不是直接返回一个404状态。

这个问题希望大家继续讨论,上面是本人的一点拙见。请有SEO经验的同学发表一下经验看法吧。
回复

使用道具 举报

幸福摩天轮 发表于 2009-9-23 12:24:40 | 显示全部楼层
还有关于UCHOME的关键字和描述标签已经录入bug建议了,就不要提了。
回复

使用道具 举报

暗恋未遂 发表于 2009-9-23 12:52:34 | 显示全部楼层
楼主的意思是说 想直接返回404的代码。
回复

使用道具 举报

larryli 发表于 2009-9-23 12:57:32 | 显示全部楼层
本帖最后由 larryli 于 2009-9-23 13:03 编辑

自定义404都是唯一的url 比如 http://www.foo.com/404.html 在搜索引擎中只是保存一个页面
而多个 url 指向同样内容的一个页面,就产生了多个重复页面。

关于重复页面的问题,多说几句。严格的 SEO 会使用 301 跳转来处理重复页面。
也就是采用 rewrite 使得 http://u.discuz.net/home/space.php?do=homehttp://u.discuz.net/home/space-home.html 为同一页面时,会让原始 url 即 http://u.discuz.net/home/space.php?do=home 通过 301 跳转到 http://u.discuz.net/home/space-home.html
告知搜索引擎,http://u.discuz.net/home/space.php?do=home 这个 url 是错误的,这个页面应该收录 http://u.discuz.net/home/space-home.html 这个 url。
详细的内容可以看 drupal 的 Global Redirect 模块说明。

自定义404页面的标准处理是,url 不存在,301 跳转到 404.html 页面,该页面也返回 404 代码。额外的工作就是提供建议链接,比如找不到指定的话题,就列出最新的话题,以留住用户。
回复

使用道具 举报

暗恋未遂 发表于 2009-9-23 13:09:22 | 显示全部楼层
啊。返回404了。3Q
回复

使用道具 举报

alexclark 发表于 2011-4-27 13:27:48 | 显示全部楼层
这个问题解决了吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-5-19 05:32 , Processed in 0.096989 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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