discuz x3完全伪静态化的方法 动态首页最新回复不彻底 上一个主 题下一个主题

2014年8月19日 发表评论 阅读评论

一、discuz x3论坛首页“最后发表”帖子链接静态化
现在还没有找到完美的解决方法,不过通过这样做还是基本实现我想要的形式,有两种方法,各有各的不足。
方法1、/source/module/forum/ 下的forum_redirect.php

dheader(‘Location: forum.php?mod=viewthread&tid=’.$_G['tid'].$pageadd.’#lastpost’);
换成
header("HTTP/1.1 301 Moved Permanently");
dheader(‘Location:thread-’.$_G['tid'].’-’.$page.’-1.html#lastpost’);
虽然首页显示是动态地址,但是点击就会301跳转到静态页,这个方法是定死的,取消了伪静态设置还是会跳转到这个伪静态地址,所以一定开启了伪静态而且必须是系统默认的方式,才可以这样修改
方法2、这个方法是直接修改模板discuz.htm中的
forum.php?mod=redirect&tid=$forum[lastpost][tid]&goto=lastpost#lastpost
换成
forum.php?mod=viewthread&tid=$forum[lastpost][tid]
一共有三处
这个方法可是完美支持自动判断网站是伪静态还是动态,不足之处是点击不会跳转到最后回复的帖子,只会跳转到最后回复的主题。
二、discuz x2“上一主题、下一主题”链接静态化
利用$_G[tid]-1 和 $_G[tid]+1 来做连接
打开viewthread.htm文件
查找
<a href="forum.php?mod=redirect&goto=nextoldset&tid=$_G[tid]" title="{lang last_thread}"><img src="{IMGDIR}/thread-prev.png" alt="{lang last_thread}" class="vm" /></a>
<a href="forum.php?mod=redirect&goto=nextnewset&tid=$_G[tid]" title="{lang next_thread}"><img src="{IMGDIR}/thread-next.png" alt="{lang next_thread}" class="vm" /></a>
修改为:
<!–{eval $up_thread=$_G[tid]-1;$down_thread=$_G[tid]+1;}–>
<a href="thread-$up_thread-1-1.html" rel="nofollow" title="{lang last_thread}"><img src="{IMGDIR}/thread-prev.png" alt="{lang last_thread}" class="vm" /></a>
<a href="thread-$down_thread-1-1.html" rel="nofollow" title="{lang next_thread}"><img src="{IMGDIR}/thread-next.png" alt="{lang next_thread}" class="vm" /></a>
如果主题被删除就找不到了用这种方法。。。

三、Discuz X2.0论坛帖“复制链接”伪静态实现方法
打开 /template/default/forum/viewthread.htm 在大约200行左右找到以下代码:
forum.php?mod=viewthread&tid=$_G[tid]$fromuid
换成
forum.php?mod=viewthread&tid=$_G[tid]
就可以了
四、discuz x2帖子列表页默认打开修改为新窗口打开
discuz x2帖子列表默认打开是本窗口打开的,不符合国内用户使用习惯,最正规的修改如下面两个步骤:
1: 根目录/static/js/forum.js
找到 atarget函数
改成
function atarget(obj) {
obj.target = getcookie(‘atarget’) ?  ”: ‘_blank’;
}
2:把‘打开新窗口’改成‘本窗口打开’ 修改如下:
根目录/template/default/forum/forumdisplay_list.html文件中:
找到
<span id="atarget" {if !empty($_G['cookie']['atarget'])}onclick="setatarget(0)" class="y atarget_1"{else}onclick="setatarget(1)" class="y"{/if} title="{lang new_window_thread}">{lang new_window}</span>
用下边的替换即可
<span id="atarget" {if !empty($_G['cookie']['atarget'])}onclick="setatarget(0)" class="y atarget_1"{else}onclick="setatarget(1)" class="y"{/if} title="本窗口打开帖子">本窗口</span>

五、discuz x2 rss输出链接的静态化

今天(2011-12-11)又发现一个discuz x2 url地址不规范的地方,就是rss的地址不能自动判断网站设置的是静态还是动态,一律会输出动态的样式,那对于开启了伪静态的朋友来说是个很不好的地方,如何将rss输出结果变成静态化呢,下面是具体修改步骤:
打开source/module/forum/forum_rss.php
1、论坛首页URL标准化:如果不需要标准的人不用修改

<link>{$_G[siteurl]}forum.php</link>
改为
<link>{$_G[siteurl]}</link>
2、主题列表页URL伪静态:把
<link>{$_G[siteurl]}forum.php?mod=forumdisplay&fid=$rssfid</link>
改为
<link>$_G[siteurl]forum-$forum[fid]-1.html</link>
3、帖子内容页URL伪静态:把
<link>$_G[siteurl]forum.php?mod=viewthread&tid=$thread[tid]</link>
改为
<link>$_G[siteurl]thread-$thread[tid]-1-1.html</link>

六、discuz x2 帖子链接统一(帖子链接唯一化)
开启了伪静态的帖子链接是这样的形式:thread-x-y-z.html,其中x是帖子的id(固定不变的),y是帖子的页数(也是固定的),z是帖子所在列表页的页数(这个是变化的,随着帖子回复或者新帖的加入,所处位置就会变化),如何让z不变呢,可能通过修改template/default/forum/forumdisplay_list.htm解决,修改后虽然帖子的url统一了,但是在帖子页里点击“返回列表”,返回的是列表第一页而不是帖子所在的列表页。
找到
<a href="forum.php?mod=viewthread&tid=$thread[tid]&{if $_G['gp_archiveid']}archiveid={$_G['gp_archiveid']}&{/if}extra=$extra"$thread[highlight]{if $thread['isgroup'] == 1 || $thread['forumstick']} target="_blank"{else} onclick="atarget(this)"{/if} class="xst" >$thread[subject]</a>
修改为
<a href="forum.php?mod=viewthread&tid=$thread[tid]" $thread[highlight]{if $thread['isgroup'] == 1} target="_blank"{/if} onclick="atarget(this)" class="xst">$thread[subject]</a>7.下一主题上一主题图片修改.

8.开启伪静态。
全局,seo设置,
论坛主题列表页 {fid}, {page}  
论坛主题内容页 {tid}, {page}, {prevpage}
可用上打勾。
然后 点 查看当前的 Rewrite 规则
URL 静态化  完工 ..

dz论坛最新回复帖子url链接实现伪静态化去除lastpost[seo技巧]

dz论坛四格和首页的最新回复被顶起来的帖子的链接url是动态的,即使我们已经做了dz的伪静态设置,这一部分无法一起伪静态地址。所以即使老帖子被回复顶到首页,该帖子的链接地址也无法再次有机会被抓取,所以我们要修改。

当我们采用discuz论坛程序建设的网站伪静态后,在论坛版块里面点击帖子转到帖子内容页是伪静态的地址。但是当我们点击论坛首页上面出现的“最后发表”“最新发表”等帖子标题时转到的具体的帖子内容页后发现帖子的地址却是动态地址:“网站地址/forum.php?mod=redirect&tid=$forum数字&goto=lastpost”。很不利于搜索引擎的抓取,所以作为seo技巧,爱伦颇日记网觉得很有必要分享一下技巧。
本文主要介绍如何实现最新回复帖子的伪静态—解决discuz x3首页最后发表帖子地址伪静态:
具体解决方法:
在template\default\forum\discuz.htm页面
查找:

forum.php?mod=redirect&tid=$forum[lastpost][tid]&goto=lastpost#lastpost

【其实建议搜索]&goto=lastpost这个就可以了,方便,因为有好几个地方需要改动,

有dz四格的,还有首页板块最新发表的。
替换以上代码为:

thread-$forum[lastpost][tid]-1-1.html

【说明一下】以上代码的替换,是实现板块旁边的最近发表帖子链接的伪静态。至于dz四格的最新回复伪静态,大同小异。
是替换这个:

forum.php?mod=redirect&tid=$thread[lastpost][tid]&goto=lastpost#lastpost

修改为:
thread-$thread[lastpost][tid]-1-1.html

好了,就这么简单,你的论坛马上实现seo最优。

演示网站论坛:http://bbs.shandian.biz/


转载请注明来自:[MSN Spaces]http://msn.shandian.biz/733.html

  1. 性爱姿势
    2015年7月24日13:56 | #1

    看起来还有点复杂