|
Discuz设计了一个NOROBOT变量,当这个变量为true 的时候,定义中的搜索引擎都会无法访问,默认比如在post.php里面开头就定义了define('NOROBOT', TRUE);
查看common.inc.php,可以看到如下函数
- getrobot();
- if(defined('NOROBOT') && IS_ROBOT) {
- exit(header("HTTP/1.1 403 Forbidden"));
- }
复制代码
可见,如果discuz调用getrobot()函数发现来访者是蜘蛛,就返回http 403禁止访问的错误提示
getrobot()函数是在global.func.php被定义的
- function getrobot() {
- if(!defined('IS_ROBOT')) {
- $kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla';
- $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'])) {
- define('IS_ROBOT', TRUE);
- } else {
- define('IS_ROBOT', FALSE);
- }
- }
- return IS_ROBOT;
- }
复制代码 |
|