TShopping

 找回密碼
 註冊
搜索
查看: 682|回復: 0

[X1.5] 加強版google sitemap for discuzX1.5(release版)

[複製鏈接]
發表於 2012-1-24 16:38:23 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
插件發佈 插件名稱:最完美google sitemap for discuzX1.5
插件來源:原創插件
適用版本:Discuz! X1.5
語言編碼:GBK簡體 UTF8簡體 BIG5繁體 UTF8繁體  
最後更新時間:2011-04-22
插件作者:bugx
插件簡介:google sitemap for dzX1.5生成器加強版 release
特點:
1、計劃任務文件生成google sitemap。每天定時生成,也可以每小時生成
2、可生成門戶文章,論壇帖子,個人主頁,日誌頁面,群組頁面
3、只支持偽靜態頁面。(我想不做偽靜態的1.5也不需要sitemap了吧)
4、支持門戶,論壇,群組,家園自定義域名
5、支持,文章,帖子,主頁。群組的自定義偽靜態頁面
6、定時增量生成sitemap,無需全部生成一次。
7、增量不增文件,不產生多餘的文件,不出現重複頁面(如果沒有子域名,會有每個欄目首頁的重複一次,這個自己註釋掉即可,問題不大)。
8、支持定義每頁生成的數量。
9、支持斷點生成地圖,出現錯誤,修正後繼續生成。
10、支持自定義生成目錄(有的網站非常多的記錄數,在根目錄生成太多的文件,很不美觀。也不方便管理。對安全性設置也不好)

安裝:

只有一個文件,先打開文件配置下參數
/*用戶自定義配置開始*/
//如果你改動過參數,請刪除網站地圖目錄下所有的地圖文件以及data下sitemap.log文件。重新生成一次。

$sm_step=2000; //單次執行次數,根據自己需要修改

$bbs_page="thread"; //bbs的靜態頁面規則,默認thread-xxx-1-1.html格式

$portal_page="article";//portal靜態頁面規則,默認為article-xx-1.html格式

$home_page="space";//用戶個人主頁靜態頁面規則,默認為space-uid-xxxxx.html

$group_page="group"; //群組靜態頁面規則,默認group-{fid}-{page}.html

$sitemap_path="/data/sitemap/";//sitemap的XML文件保存的路徑,文件夾需要自己建立
由於google的sitemap裡的網址不允許包含上級目錄的地址,所有建議大家放在根目錄。

/*用戶自定義配置結束*/
上傳到source\include\cron目錄下。
ftp上建好sitemap的生成目錄,並給予可寫權限。默認根目錄
添加一個計劃任務,取名為 「google地圖任務」。編輯這個任務,任務腳本裡寫 cron_sitemap.php(這個文件名不可更改)
設置好運行時間。


第一次運行,最好手工執行一下。先把老的數據生成。

程序會在data目錄下生成一個日誌文件sitemap.log,不可隨意刪除。


生成完成後,生成4個索引sitemap
portal_sitemap.xml
forum_sitemap.xml
home_sitemap.xml
group_sitemap.xml

把這4個索引文件根據你的域名分配提高到各自的站點工具下,(切記,不然會出現google的警告錯誤)

可以編輯robot文件
在最後添加寫入讓搜索引擎自動找到你的sitemap
Sitemap: http://論壇域名/forum_sitemap.xml
Sitemap: http://群組域名/group_sitemap.xml
Sitemap: http://家園域名/home_sitemap.xml
Sitemap: http://門戶域名/portal_sitemap.xml

由於data目錄是被robot禁止的,默認路徑改為/sitemap/
更改索引文件為sitemap.xml
修正索引文件中無效的域名頁面,去除了sitemap.xml本身被包含的錯誤(10:31分之前的一個文件有錯誤)
21:40分最後更新
將一個整合的sitemap分成4個子域名分別的獨立sitemap。避免提交錯誤
將默認路徑改為根目錄,解決google提交的錯誤。
經過測試提交到google,50多萬頁面很完美被收錄,沒有再提示錯誤。


後記:
經過我觀察發現,baidu是兼容這種sitemap的。在百度中,我的家園日誌收錄「找到相關網頁約141,000篇」
以前的情況,日誌是很難收錄的。但是把sitemap寫入到robot和做到網站鏈接上,這個收錄非常明顯的改善了。
但是問題在於百度有時候亂收入鏈接,明明將/space.php*寫入到robot裡,還是會收錄這種動態的鏈接。
這個改為/space.php?uid=*後不知道會不會好一些。繼續觀察。


有人碰到一種問題,就是生成的sitemap在的,而4個索引文件為空,那麼2種可能性。
1、前面你已經下載過這個插件,運行過一次了。刪除data/sitemap.log文件,重新執行下即可
2、PHP低於5.0 或者為了安全禁用了scandir函數。
替換方法
在文件最下面增加一個函數

  1. $dh  = opendir($dir);
  2. while (false !== ($filename = readdir($dh))) {
  3.     $files[] = $filename;
  4. }
  5. sort($files);
  6. rsort($files);
  7. return $files;
  8. }
複製代碼




在398行左右
  1. $arrfiles=scandir(DISCUZ_ROOT.$sitemap_path);
複製代碼

用這個函數替換scandir即可。


有些人需要把生成的文件放到一個目錄下的。需要通過rewrite來解決
  1. nginx下的規則如下
  2. rewrite "^/(forum|group|home|portal)_sitemap\.xml$" /sitemap/$1_sitemap.xml last;
  3.     rewrite "^/([a-z]+)_sitemap_([0-9]+)\.xml$" /sitemap/$1_sitemap_$2.xml last;

  4. apache下未測試,應該和nginx相差不大
  5. RewriteRule ^/(forum|group|home|portal)_sitemap\.xml$ /sitemap/$1_sitemap.xmlRewriteRule ^/([a-z]+)_sitemap_([0-9]+)\.xml$  /sitemap/$1_sitemap_$2.xml
複製代碼
或者
  1. RewriteRule ^(.*)/(forum|group|home|portal)_sitemap\.xml$ $1/sitemap/$2_sitemap.xmlRewriteRule ^(.*)/([a-z]+)_sitemap_([0-9]+)\.xml$  $1/sitemap/$2_sitemap_$3.xml
複製代碼
然後在根目錄下建立一個sitemap的文件夾
配置
$sitemap_path="/sitemap/"
代碼中找到
  1. if (strstr($arrfiles[$key],"portal_")) 下面
  2. $loc_portal="http://".$portal_url.$sitemap_path.$arrfiles[$key];
  3. 改為$loc_portal="http://".$portal_url.'/'.$arrfiles[$key];
複製代碼
下面4個同理修改。

測試通過

 

臉書網友討論

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-8 06:28 , Processed in 0.055775 second(s), 19 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表