Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] 加强版google sitemap for discuzX1.5(release版)

  [复制链接]
bugx 发表于 2010-10-28 16:30:14 | 显示全部楼层 |阅读模式
插件发布
插件名称: 屎上最完美google sitemap for discuzX1.5
插件来源: 原创插件
适用版本: Discuz! X1.5
语言编码: GBK简体 UTF8简体 BIG5繁体 UTF8繁体 
最后更新时间: 2011-04-22
插件作者: bugx
插件简介: google sitemap for dzX1.5生成器加强版 release
本帖最后由 bugx 于 2011-10-29 14:25 编辑

2.0的更新
https://discuz.dismall.com/thread-2474942-1-1.html
百度sitemap地址
https://discuz.dismall.com/thread-1963112-1-1.html

特点:
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


大家测试,免费一周哦。正式版下载要些金币啦。

有bug的跟贴反应。

后续更新计划
生成baidu sitemap
生成相册图片sitemap



10-29日更新
修正了sitemap版本,采用最新的0.9的。原来的版本里用了0.84的
修正了索引文件的格式
由于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. function sdir($dir)
  2. {
  3. $dh  = opendir($dir);
  4. while (false !== ($filename = readdir($dh))) {
  5.     $files[] = $filename;
  6. }

  7. sort($files);



  8. rsort($files);

  9. return $files;

  10. }
复制代码


在398行左右
$arrfiles=scandir(DISCUZ_ROOT.$sitemap_path);

用这个函数替换scandir即可。

如果PHP<5或者做了函数限制的虚拟主机上,会出现4个索引文件中没有记录,是空的。那么请使用下面的这个修改版本。

google的



有些人需要把生成的文件放到一个目录下的。需要通过rewrite来解决
nginx下的规则如下
rewrite "^/(forum|group|home|portal)_sitemap\.xml$" /sitemap/$1_sitemap.xml last;
    rewrite "^/([a-z]+)_sitemap_([0-9]+)\.xml$" /sitemap/$1_sitemap_$2.xml last;

apache下未测试,应该和nginx相差不大
RewriteRule ^/(forum|group|home|portal)_sitemap\.xml$ /sitemap/$1_sitemap.xmlRewriteRule ^/([a-z]+)_sitemap_([0-9]+)\.xml$  /sitemap/$1_sitemap_$2.xml
或者
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/"
代码中找到
if (strstr($arrfiles[$key],"portal_")) 下面
$loc_portal="http://".$portal_url.$sitemap_path.$arrfiles[$key];
改为$loc_portal="http://".$portal_url.'/'.$arrfiles[$key];
下面4个同理修改。

测试通过

评分

4

查看全部评分

巨盈网络 发表于 2010-10-28 16:32:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

raphk 发表于 2010-10-28 16:48:12 | 显示全部楼层
收藏了.....
回复

使用道具 举报

 楼主| bugx 发表于 2010-10-28 16:53:06 | 显示全部楼层
我自己测试了。完成整个过程。
我的帖子和用户数量很多,生成443个文件
回复

使用道具 举报

raphk 发表于 2010-10-28 16:55:55 | 显示全部楼层
本帖最后由 raphk 于 2010-10-28 17:01 编辑

建议楼主把..生成的 XML的sitemap文件夾 让它生成在根目录..  

理由是默认的robots.TXT 文件拦截了DATA的收录~ 虽然可以手动去除和移动~~ 但是这样搞的话就变成手动了,不是自动的!


希望采纳意见~~~


回复

使用道具 举报

 楼主| bugx 发表于 2010-10-28 17:01:33 | 显示全部楼层
回复 raphk 的帖子

可以自定义的。
回复

使用道具 举报

风.行者 发表于 2010-10-28 17:02:03 | 显示全部楼层
回复

使用道具 举报

 楼主| bugx 发表于 2010-10-28 17:02:30 | 显示全部楼层
回复 raphk 的帖子

在根目录有安全性问题,我所有的目录要么只读,要么不允许直接运行PHP文件。
比较严格的控制权限
回复

使用道具 举报

raphk 发表于 2010-10-28 17:03:07 | 显示全部楼层


不好意思..没留意~~~
回复

使用道具 举报

Smirk 发表于 2010-10-28 17:40:30 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-18 10:25 , Processed in 0.037162 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表