登录谦迷博客

用户名

密码

注册成为谦迷

查看谦迷日志|返回谦迷日志列表

【原创】discuz7配置搜索引擎蜘蛛用户。

2009-04-18 00:38

题记:代码不多,本人也是为数不多的写PHP程序。下午闲来无事的研究中文站时,发现在百度里面被收录的全是http://www.luchenmagic.com/archiver/这样的链接。对于这样的情况,忽然想到自己曾经将discuz游客权限设置为0。可想而知,可爱的蜘蛛也是游客,自然没有权限收录自己的站啦。于是突发奇想的想改改discuz7程序,分配对应的用户权限给对应的搜索引擎蜘蛛。程序暂没有设置为插件,只是简单的if else判断。但是这样对于SEO来说,能够提高你的站在各大搜索引擎上的排名。希望有兴趣的朋友可以继续改善这个,最好能做成一个插件。


灵儿,BH改的时候,记住备份原文件。嘿嘿。

首先,用过discuz6的朋友们都知道,discuz6有一个识别蜘蛛的php文件,好像叫ROBOT.php。但是到discuz7以后,就不见得这个文件咯。其实只是discuz7将其浓缩为一个函数在global.func.php中。对应的在全局中的common.inc.php调用这个函数,代码不多。废话不多,执行修改。分析过程最后给出。

1.找到include/global.func.php中。

搜索function getrobot(),将整个函数替换为:

function getrobot() {
if(!defined('IS_ROBOT')) {
$kw_spiders = 'Bot|Crawl|Spider|spider|Slurp|slurp|sohu-search|Lycos|lycos|robozilla|baidu|Baidu|google|Google|soso|Soso|YodaoBot|Sogou|sogou|Adsbot|Mediapartners|Msn|msn|scooter|FAST|ia_archiver|Ia_archiver';
$kw_browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla';
if(!strexists($_SERVER['HTTP_USER_AGENT'], 'http://') && preg_match("/($kw_browsers)/i", $_SERVER['HTTP_USER_AGENT'])) {
define('IS_ROBOT', FALSE);
} elseif(preg_match("/($kw_spiders)/i", $_SERVER['HTTP_USER_AGENT'],$matches))
{
define('IS_ROBOT', TRUE);
} else {
define('IS_ROBOT', FALSE);} }
return IS_ROBOT;
}

说明:其实这里改动只是增加一些蜘蛛的识别名称,在原有discuz基础上增加一些蜘蛛的识别名称。

2.找到include/global.func.php中。
搜索function getrobot(),将此函数之上增加一个function getrobot_name() 获取蜘蛛名字:

function getrobot_name() {
if(!defined('SPIDER_NAME')) {
$kw_spiders = 'Bot|Crawl|Spider|spider|Slurp|slurp|sohu-search|Lycos|lycos|robozilla|baidu|Baidu|google|Google|soso|Soso|YodaoBot|Sogou|sogou|Adsbot|Mediapartners|Msn|msn|scooter|FAST|ia_archiver|Ia_archiver';
$kw_browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla';
if(!strexists($_SERVER['HTTP_USER_AGENT'], 'http://') && preg_match("/($kw_browsers)/i", $_SERVER['HTTP_USER_AGENT'])) {
define('SPIDER_NAME', '1');
} elseif(preg_match("/($kw_spiders)/i", $_SERVER['HTTP_USER_AGENT'],$matches))
{
define('SPIDER_NAME',$matches[0]);
} else {
define('SPIDER_NAME', '1');
}
}
return SPIDER_NAME;
}

3.在discuz后台增加如下用户,并记录对应的UID,以及通过phpmyadmin或者数据库查询对应加密以后的字符串。
google蜘蛛: Googlebot 用户google蜘蛛(UID XXXX) 添加成功
百度蜘蛛:baiduspider 用户 百度蜘蛛(UID XXXX) 添加成功
yahoo蜘蛛:slurp 用户 yahoo蜘蛛(UID XXXX) 添加成功
alexa蜘蛛:ia_archiver 用户 alexa蜘蛛(UID XXXX) 添加成功
msn蜘蛛:Msnbot 用户 msn蜘蛛(UID XXXX) 添加成功
lycos蜘蛛: Lycos 用户 lycos蜘蛛(UID XXXX) 添加成功
搜狗蜘蛛:sogou spider 用户 搜狗蜘蛛(UID XXXX) 添加成功
adsense蜘蛛:Mediapartners 用户 adsense蜘蛛(UID XXXX) 添加成功
adwords蜘蛛: Adsbot 用户 adwords蜘蛛(UID XXXX) 添加成功
有道蜘蛛:YodaoBot 用户 有道蜘蛛(UID XXXX) 添加成功
搜搜蜘蛛:Sosospider 用户 搜搜蜘蛛(UID XXXX) 添加成功
sohu蜘蛛:sohu-search 用户 sohu蜘蛛(UID XXX) 添加成功

4.找到include/common.inc.php中
搜索:
$prompt = $sessionexists = $seccode = 0;

在其下增加if else判断。这里不一次列出,按照下面格式增加。

if (IS_ROBOT) {
$SPIDER_NAME=getrobot_name();
if($SPIDER_NAME=='google'||$SPIDER_NAME=='Google')
{
$discuz_uid="XXXX";
$discuz_pw="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$discuz_secques="";
}elseif($SPIDER_NAME=='baidu'||$SPIDER_NAME=='Baidu'){
$discuz_uid="XXXX";
$discuz_pw="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$discuz_secques="";
}else{
$discuz_uid="XXXX";
$discuz_pw="XXXX";
$discuz_secques="";
}
}

$discuz_uid="XXXX"; 为对应刚才添加的用户的UID,
$discuz_pw="XXXX"; 为对应刚才添加的用户加密密码串。
$discuz_secques=""; 为对应的回答问题,默认为空,最好添加用户时也空。

最后效果:


谦迷分享 475 次阅读 | 1 个评论
全部(2)

留下脚印

评论

  • fannie601
    fannie601 2009-06-13 20:19
    Shawn好強大.....這是我ㄧ輩子都寫不出來的程式....
    原來那群蜘蛛是故意放的....我還想說他們可以一天24hr都在線上太厲害了....結果....