返回列表 回复 发帖

Discuz!7.0论坛google sitemap插件输出静态网址的改进方法

搜索了很多Discuz!论坛的google sitemap插件的帖子,多数是dangliu版本的,可供下载的插件源代码都一样,输出的帖子地址都还是动态的,而很多论坛都做了伪静态的处理。当然我们都希望搜索引擎能收录静态的网址,这样有利于收录和排名。所以dangliu版本的google sitemap插件就存在这个缺点了,提供给google的动态的,而论坛上可抓取的却是静态的,如果两都收录了,这就存在重复内容、重复标题的问题了。

在前一篇文章中首佳管理软件论坛搜索引擎优化更新说明,将RSS中的链接地址静态化的问题,修改的方法是这样的:
rss.php,将其中的  <link>{$boardurl}viewthread.php?tid=$thread[tid]</link>\n".
修改为:<link>{$boardurl}thread-$thread[tid]-1-1.html</link>\n".

google sitemap插件主要程序文件就是plugins\googlesitemap\plangetsitemap.inc.php文件。根据这个做法,我们可以在plangetsitemap.inc.php文件中找到类似这样的代码:{$boardurl}viewthread.php?tid=$thread[tid],把它改为$url = $boardurl."thread-".$ab[$i][tid]."-1-1.html";
有两处都这样修改就可以了,然后重新上传再去后重新执行计划。就生成了首佳管理软件论坛这种sitemap了,结果如本站的sitemap:http://bbs.xiuli123.com/sitemap_1.xml,另外还有一个sitemap索引:http://bbs.xiuli123.com/sitemap_index.xml

处理好了之后再去google中文网站管理员工具中提交sitemap就行了。
这个插件还有一个漏洞就是全部帖子都输出了,包括你特意要去禁止的栏目。对于这个问题可以在robots.txt文件中禁止它。或者参考Rss的做法不输出禁止了的栏目。
最新解决办法:直接在计划任务执行程序plangetsitemap.inc.php文件中修改输出条件,比如下面的修改例子是屏蔽版块编号为3的栏目内所有帖子不输出。

$query = $db->query("SELECT tid,subject,dateline  FROM {$tablepre}threads WHERE fid<>'3' ORDER BY tid DESC");
plangetsitemap.inc.php文件中漏掉了一个问题:
       //   取得帖子数目
                   $q = $db->query("SELECT count(tid) FROM {$tablepre}threads  WHERE fid<>'1' and fid<>'2' ");
                   $num = $db->result($q,0);

在这里也要加上过滤条件,就不会产生下面这样的问题了:
比如这类网址bbs.xiuli123.com/thread--1-1.html

通常产生这种问题的帖子地址都放在最后一个sitemap中了.比如:http://bbs.xiuli123.com/sitemap_2.xml
返回列表 回复 发帖