為DiscuzX2 X2.5添加PING功能 加速百度蜘蛛索引

Discuz一直以來都是國內站長使用最多的論壇程序,發展到X系列之后,更是變得非常強大了?,F在最新版本為X2.5,金華也搞了個論壇,也一直在抽時間研究Discuz,以前寫過一篇關于Discuz X2.5的優化小記,是對Discuz優化的一點記錄,現在給大家匯報下,里面提到的屏蔽重復URL規則,從目前的測試情況來看,一切正常,大家可以放心使用。

言歸正傳,看看如何為DiscuzX2 X2.5添加PING功能

什么是Ping服務

百度Ping是基于XML_RPC標準協議的更新通告服務,一般廣泛用于博客中把內容更新快速通知給百度,像Wordpress、Zblog都有Ping功能,以便百度及時進行抓取和更新。其它搜索引擎也有其PING服務,原理一樣,這里只用百度為例。

Ping服務一般分為兩種,一種是自動Ping,一種是手動Ping,百度ping服務的地址為:http://ping.baidu.com/ping/RPC2 了解更多Ping功能的知識請點擊:http://zhanzhang.baidu.com/tools/ping

Discuz本身是不支持Ping功能的,我們現在就來實現這樣一個功能,讓你論壇每產生一個新帖后,都自動的通知百度有新內容了,讓其過來抓取,這樣可以達到最快的速度收錄論壇的內容。

添加PING功能

首先新建一個PHP文件,文件名自定義,如:ping.php? 最好用Dreamweaver之類的工具,不會有編碼問題。

然后視論壇情況而定,分為兩種情況,一種是開啟了偽靜態,一種是沒開偽靜態

開啟了偽靜態就把以下代碼加到你創建的PHP文件當中:

<?php
 if(isset($_GET['action']))
 {
 $canshu=$_GET['action'];
 }

function postUrl($url, $postvar)
 {
 $ch = curl_init();
 $headers = array(
 "POST ".$url." HTTP/1.0",
 "Content-type: text/xml; charset=\"utf-8\"",
 "Accept: text/xml",
 "Content-length: ".strlen($postvar)
 );
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $postvar);
 $res = curl_exec ($ch);
 curl_close ($ch);
 return $res;
 }

$baiduXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
 <methodCall>
 <methodName>weblogUpdates.extendedPing</methodName>
 <params>
 <param><value><string>你的站名</string></value></param>
 <param><value><string>http://你的網址/</string></value></param>
 <param><value><string>http://你的網址/thread-$canshu-1-1.html</string></value></param>
 <param><value><string>http://你的網址/forum.php?mod=rss</string></value></param>
 </params>
 </methodCall>";
 $res = postUrl('http://ping.baidu.com/ping/RPC2', $baiduXML);

if ( strpos($res, "<int>0</int>") )
 {
 header ("Location:http://你的網址/thread-$canshu-1-1.html");
 }
 else
 {
 header ("Location:http://你的網址/thread-$canshu-1-1.html#");
 }
 ?>

PS:注意標紅的地方換成你自己的網址,另外-1-1這個是要根據后臺偽靜態規則的改變,如是默認則無須更改,如果像金華一樣改過了,則后面去掉一個-1即可,如何知道:http://www.domain.com/thread-123-1.html 這種就是改過的,沒改過就是http://www.domain.com/thread-123-1-1.html這種格式,.html前多了一個-1而已。添加好代碼后保存,將文件上傳到論壇根目錄下即可。

如果沒開啟偽靜態,則在新建的PHP文件中添加以下代碼:

<?php
 if(isset($_GET['action']))
 {
 $canshu=$_GET['action'];
 }

function postUrl($url, $postvar)
 {
 $ch = curl_init();
 $headers = array(
 "POST ".$url." HTTP/1.0",
 "Content-type: text/xml; charset=\"utf-8\"",
 "Accept: text/xml",
 "Content-length: ".strlen($postvar)
 );
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $postvar);
 $res = curl_exec ($ch);
 curl_close ($ch);
 return $res;
 }

$baiduXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
 <methodCall>
 <methodName>weblogUpdates.extendedPing</methodName>
 <params>
 <param><value><string>你的站名</string></value></param>
 <param><value><string>http://你的網址/</string></value></param>
 <param><value><string>http://你的網址/forum.php?mod=viewthread&tid=$canshu</string></value></param>
 <param><value><string>http://你的網址/forum.php?mod=rss</string></value></param>
 </params>
 </methodCall>";
 $res = postUrl('http://ping.baidu.com/ping/RPC2', $baiduXML);

if ( strpos($res, "<int>0</int>") )
 {
 header ("Location:http://你的網址/forum.php?mod=viewthread&tid=$canshu");
 }
 else
 {
 header ("Location:http://你的網址/forum.php?mod=viewthread&tid=$canshu#");
 }
 ?>

原理同上,就不再解釋了。

接下來還要修改一個文件,登陸FTP,找到source\include\post\post_newthread.php 這個文件:

如果是Discuz X2,則搜索代碼:

showmessage('post_newthread_succeed', "forum.php?mod=viewthread&tid=$tid&extra=$extra", $param);

替換為:

showmessage('post_newthread_succeed', "ping文件的名稱.php?action=$tid", $param);

紅色地方改為你自定義的PHP文件名即可。

如果是Discuz X2.5,則搜索代碼:

showmessage('post_newthread_succeed', $returnurl, $values, $param);

替換為:

showmessage('post_newthread_succeed', "ping文件的名稱.php?action=$tid", $values, $param);

修改同上,保存后,覆蓋source\include\post\post_newthread.php文件即可。

Ping功能驗證

文件都修改添加好之后,需要驗證一下我們的功能是否添加成功,一種簡單的驗證方法就是發布一個新帖,然后看看發布后該帖子的URL鏈接最后有沒有個#號,如果沒有,則表示成功了,如果有#號,則表示出錯了,需要再檢查一下自己的操作。

另外還可以通過訪問http://你的網址/ping文件的名稱.php?action=任意新帖子ID,這樣的鏈接格式,不成功的話,網址后面同樣會有#號。

經金華測試成功,共享給大家。

Ping功能的好處在于可以實時的通知搜索引擎進行爬行,如果帖子符合搜索引擎的要求,則會第一時間收錄。Ping功能也不再是博客專享了,有興趣的不妨自己試一下,一段時間后,會更新測試的結果,看看收錄是否增加了。

未經允許不得轉載:鄺金華博客 » 為DiscuzX2 X2.5添加PING功能 加速百度蜘蛛索引

贊 (1)
广西快三走势图一定牛 有一个捕鸟游戏叫什么 海南体彩4 1 在家能做什么兼职挣钱 吉林体彩11选五技巧 四川金7乐助手 陕西体彩11选5电子图 江苏7位数*规则 搜 江西11选5今日开奖 福彩11选五25开奖结果 上海11选五开奖遗漏