Discuz:Discuz伪静态URL重复问题解决方法

来自站长百科
跳转至: 导航、​ 搜索

导航: 上一级 | Discuz | 首页 | PhpWind | 动网论坛 | vBulletin | phpBB | MolyX | Discuz!NT

问题:

例如这个地址:http://bbs.idcspy.com/thread-9309-1-1.html ,第一个数字9309代表帖子的id,第二个数字1代表这个主题的第一页,第三个数字1代表这个主题在这个版的第一页。但是随着帖子的增加,这个帖子会跑到第二页,第三页。。。。然后最后这个数字就会不断变化。也就是说Discuzurl在不断变化.Discuz虽然设置了如果是蜘蛛抓取,最后一位返回是1,但是还是不能从根本上解决问题。它只解决了搜索引擎直接到你的网站抓取的网页地址是单一的,但是如果别的网站引用你的帖子地址,还是会出现URL地址重复的问题。

我们这里给出的解决方案是直接修改Discuz控制伪静态地址的函数,最后一个数字始终输出为1,这样可以保证rewrite之后的地址是单一的,但是缺点是URL不能给discuz正确传递参数,所以如果返回版面的时候只能返回到改版的首页而不能返回到该帖所在的页面。


解决方法:

修改Rewrite的格式,最后一个数字统一用1代替。解决url变化和重复的问题

修改文件include/global.func.php的:

function rewrite_thread($tid, $page = 0, $prevpage = 0, $extra = '') {
	return '<a href="thread-'.$tid.'-'.($page ? $page : 1).'-'.($prevpage && !IS_ROBOT ? $prevpage : 1).'.html"'.stripslashes($extra).'>';
}

改为:

function rewrite_thread($tid, $page = 0, $prevpage = 0, $extra = '') {
	return '<a href="thread-'.$tid.'-'.($page ? $page : 1).'-'.'1'.'.html"'.stripslashes($extra).'>';
}