
自从Discuz被腾讯这头大牛收购后的确越来越强大了,云平台是最大的亮点,但是Discuz X2.0在伪静态方面仍然非常不尽人意。目前世面主流的论坛程序phpwind和Discuz都无法做到全站完美伪静态,这对SEO影响很大,如果网站的权重不够高,那么搜索引擎会认为网站出现大量的重复页面,导致降权甚至K站。
首先说说Discuz X2.0论坛功能中自带规则无法实现伪静态的地方:
1、面包屑导航
Discuz X2.0论坛所有页面的面包屑导航均是动态的,不过我们可以通过修改程序来实现伪静态。
2、论坛首页“最后发表”
首页版块上“最后发表”的帖子链接无法实现伪静态,很遗憾的告诉你,这个目前无法实现伪静态,修改程序也不行。
3、论坛帖子内容页的复制链接
这个复制链接按钮也是动态地址,我们可以通过修改程序来实现伪静态。
4、论坛帖子内容页的“上一主题”和“下一主题”
这个地方很让人郁闷,目前也是无法实现伪静态的,修改程序也不行。
所以,目前可以修改程序实现伪静态的就只有面包屑导航和论坛帖子内容页的复制链接,修改方法如下(注:修改完毕后需要到后台更新缓存哦),不要一看见代码就害怕自己不会改,你按照我说的,粘贴和复制就可以改好,完全傻瓜式的操作。
Discuz X2.0面包屑导航伪静态实现方法——
打开 /source/module/forum/forum_viewthread.php 找到以下代码:
<a href="'.$t_link.'">'.strip_tags($_G['forum']['name']).'</a>';
替换为:
'.'<a href="forum.php?mod=forumdisplay&fid='.$_G['fid'].'">'.$_G['forum']['name'].'</a> '.$forumarchive[$_G['gp_archiveid']]['displayname'];
Discuz X2.0论坛帖“复制链接”伪静态实现方法——
打开 /template/default/forum/viewthread.htm 在大约200行左右找到以下代码:
<a href="{$_G[siteurl]}forum.php?mod=viewthread&tid=$_G[tid]$fromuid" onclick="return copyThreadUrl(this)" title="{lang share_url_copy_comment}">[{lang share_url_copy}]</a>
替换为:
<a href="forum.php?mod=viewthread&tid=$_G[tid]$fromuid" onclick="return copyThreadUrl(this)" title="{lang share_url_copy_comment}">[{lang share_url_copy}]</a>
这样,面包屑导航和论坛帖子内容页的复制链接的伪静态就已经实现了,论坛首页“最后发表”和论坛帖子内容页的“上一主题”和“下一主题”我确实是没找到伪静态的方法,如果你找到了,记得分享一下给我哦。
另外,很多人都想去掉Discuz自带的furom.php和portal.php这几个尾巴,其实去掉的方法很简单,官方后台就可以直接进行操作,如下图:
在Discuz后台的全局→域名设置→应用域名中论坛处填上你对应的域名,这样论坛的forum.php就去掉了,门户的portal.php后缀去掉方法是一样的,在上图的门户处填上门户的域名就可以了。
但是即使这样设置了,论坛面包屑导航以及论坛列表页的“返回”按钮中仍然会有forum.php的后缀,康盛创想Discuz团队做出的产品确实很赞,但是却经常不注意这些细节,鄙视一下先!去掉论坛面包屑导航以及论坛列表页“返回”按钮中的forum.php后缀方法如下(注:修改完毕后需要到后台更新缓存哦):
1、打开 /source/module/forum/ 中的forum_viewthread.php、forum_forumdisplay.php、forum_misc.php、forum_post.php这四个文件。
搜索 ”forum.php”(包含引号),替换为 ”http://'.$_G['setting']['domain']['app']['forum'].'/”(包含引号),修改完毕后上传覆盖。
2、打开 /template/default/forum/ 中的discuz.htm(这里是以Discuz X2.0自带的模板为例,如果你用的是其他模板,需要在模板的“forum”目录中找到这个文件)。
在19行左右找到如下代码:
<a href="forum.php">{$_G[setting][navs][2][navname]}</a>$navigation
替换为:
<a href="./">{$_G[setting][navs][2][navname]}</a>$navigation
这样,面包屑导航中的forum.php后缀就已经全部去掉了。
接下来,要去掉论坛列表页“返回”按钮中的forum.php后缀:
打开 /template/default/forum/ 中的forumdisplay.htm和forumdisplay_list.htm这两个文件(这里是以Discuz X2.0自带的模板为例,如果你用的是其他模板,需要在模板的“forum”目录中找到这个文件)。
将页面中的:
<a href="forum.php">
全部修改为:
<a href="http://$_G['setting']['domain']['app']['forum']/">
至此,Discuz X2.0中论坛面包屑导航以及几处程序自身无法实现的伪静态成功静态处理,并且去掉了论坛中多余的forum.php后缀,保证结构上SEO效果最佳化。




复制链接按你这样修改后还是不能伪静态
你是哪一处不能伪静态呢?我在服务器上测试,全部可行。
是啊, 我查询我的原来就是这样替换的,貌似必须更新缓存以后 复制链接 才会真正的伪静态。。。
现在我直接修改viewthread.htm 200行中的
forum.php?mod=viewthread&tid=$_G[tid]$fromuid
换成
forum.php?mod=viewthread&tid=$_G[tid]
就可以了
论坛首页“最后发表”,我是这样做
/source/module/forum/ 下的forum_redirect.php
把
dheader(‘Location: forum.php?mod=viewthread&tid=’.$_G['tid'].$pageadd.’#lastpost’);
换成
dheader(‘Location:thread-’.$_G['tid'].’-’.$page.’-1.html#lastpost’);
虽然首页显示是动态地址,但是点击就会301跳转到静态页,这个方法是定死的,取消了伪静态设置还是会跳转到这个伪静态地址,所以一定开启了伪静态而且必须是系统默认的方式,才可以这样修改
————————————————————————–
还有另外的方法是直接修改模板discuz.htm中的
forum.php?mod=redirect&tid=$forum[lastpost][tid]&goto=lastpost#lastpost
换成
forum.php?mod=viewthread&tid=$forum[lastpost][tid]
一共有三处
这个方法不足之处是不会跳转到最后回复的帖子,只会跳转到最后回复的主题
好方法,能301也不错,权重可以传递。
额,我刚刚找到方法了:
后台-全局-积分设置-积分策略:里面的“访问推广”和“注册推广”的分值全部设置为0
更新缓存!看看,就有伪静态了。。。缺点是:不能开启推广送积分。。。
嗯,你这个在内容页针对评论那儿的URL是有效的。