DiscuzX3设置:隐藏外链仅对搜索引擎,用户可正常查看

版权申诉
0 下载量 129 浏览量 更新于2024-08-07 收藏 4KB TXT 举报
"在DiscuzX3论坛系统中,有需求实现一种功能,即全站内容中的外链只对搜索引擎的爬虫屏蔽,而对于实际的网站用户仍然可见。这个功能可以通过修改论坛的核心函数来实现,主要涉及到对链接处理的代码进行调整。" 在DiscuzX3的论坛环境中,有时为了优化SEO(搜索引擎优化)或者防止不必要的外部链接干扰,可能需要对搜索引擎的爬虫隐藏某些外链,但不影响用户正常查看。通过调整`function DiscuzCode`中的`function parseurl`函数,可以达到这个目的。 原代码段如下: ```php global $_G; if (!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\[\"']+/i", trim($text), $matches)) { $url = $matches[0]; $length = 65; if (strlen($url) > $length) { $text = substr($url, 0, intval($length * 0.5)) . ''. substr($url, -intval($length * 0.3)); } return '<a href="' . (substr(strtolower($url), 0, 4) == 'www.' ? 'http://' . $url : $url) . '" target="_blank">' . $text . '</a>'; } else { $url = substr($url, 1); if (substr(strtolower($url), 0, 4) == 'www.') { $url = 'http://' . $url; } $url = !$scheme ? $_G['siteurl'] . $url : $url; return '<a href="' . $url . '" target="_blank">' . $text . '</a>'; } ``` 要实现仅对搜索引擎蜘蛛屏蔽外链的功能,我们需要在代码中加入白名单机制,使得只有符合特定条件(例如属于白名单的域名)的链接才会被处理。修改后的代码示例: ```php //--------------代码开始------------ global $_G; $white_list = array('example.com', 'another-safe-domain.net'); // 添加您需要白名单保护的域名 if (!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\[\"']+/i", trim($text), $matches)) { $url = $matches[0]; $length = 65; // 检查URL是否在白名单内 if (!in_array(parse_url($url, PHP_URL_HOST), $white_list)) { // 如果不在白名单内,跳过链接处理,对爬虫隐藏 return $text; } if (strlen($url) > $length) { $text = substr($url, 0, intval($length * 0.5)) . ''. substr($url, -intval($length * 0.3)); } return '<a href="' . (substr(strtolower($url), 0, 4) == 'www.' ? 'http://' . $url : $url) . '" target="_blank">' . $text . '</a>'; } else { $url = substr($url, 1); if (substr(strtolower($url), 0, 4) == 'www.') { $url = 'http://' . $url; } $url = !$scheme ? $_G['siteurl'] . $url : $url; return '<a href="' . $url . '" target="_blank">' . $text . '</a>'; } //--------------代码结束------------ ``` 通过这种方式,当URL不在白名单内的时候,爬虫看到的内容将不会包含外链,而是原文本。而用户在浏览时,仍然可以看到并点击完整的链接。这有助于平衡SEO优化与用户体验之间的需求。 为了确保功能正确执行,需要确保你的论坛已更新到最新版本,并且在修改核心代码之前做好备份,以防意外情况发生。同时,定期检查并更新白名单,以适应网站内容的变化,是非常重要的。