php专区

 首页 > php专区 > PHP应用 > CMS建站 > discuz如何设置伪静态_简单配置discuz x2.5伪静态规则

discuz如何设置伪静态_简单配置discuz x2.5伪静态规则

分享到:
【字体:
导读:
         [导读] 伪静态设置可以说对搜索引擎会友好很多了,有人说伪静态为真正的静态还要好,下面我就听了这话来把一个discuz x2.5论坛设置整站为伪静态了,下面把例子与各位分享. 一、discuz x2论坛首页...

伪静态设置可以说对搜索引擎会友好很多了,有人说伪静态为真正的静态还要好,下面我就听了这话来把一个discuz x2.5论坛设置整站为伪静态了,下面把例子与各位分享.

一、discuz x2论坛首页“最后发表”帖子链接静态化

现在还没有找到完美的解决方法,不过通过这样做还是基本实现我想要的形式,有两种方法,各有各的不足.

方法1、/source/module/forum/ 下的forum_redirect.php,代码如下:

  1. //把 
  2. dheader(‘Location: forum.php?mod=viewthread&tid=’.$_G['tid'].$pageadd.’#lastpost’); 
  3. //换成 
  4. header("HTTP/1.1 301 Moved Permanently");  
  5. dheader(‘Location:thread-’.$_G['tid'].’-’.$page.’-1.html#lastpost’); 

虽然首页显示是动态地址,但是点击就会301跳转到静态页,这个方法是定死的,取消了伪静态设置还是会跳转到这个伪静态地址,所以一定开启了伪静态而且必须是系统默认的方式,才可以这样修改.

方法2、这个方法是直接修改模板discuz.htm中的如下代码:

  1. forum.php?mod=redirect&tid=$forum[lastpost][tid]&goto=lastpost#lastpost 
  2. //换成 
  3. forum.php?mod=viewthread&tid=$forum[lastpost][tid] 

一共有三处,这个方法可是完美支持自动判断网站是伪静态还是动态,不足之处是点击不会跳转到最后回复的帖子,只会跳转到最后回复的主题.

二、discuz x2“上一主题、下一主题”链接静态化 

利用$_G[tid]-1 和 $_G[tid]+1 来做连接,打开viewthread.htm文件,查找如下代码:

  1.  "forum.php?mod=redirect&goto=nextoldset&tid=$_G[tid]" title="{lang last_thread}">"{IMGDIR}/thread-prev.png" alt="{lang last_thread}" class="vm" /> 
  2. "forum.php?mod=redirect&goto=nextnewset&tid=$_G[tid]" title="{lang next_thread}">"{IMGDIR}/thread-next.png" alt="{lang next_thread}" class="vm" />  
  3. //修改为: 
  4.   
  5. "thread-$up_thread-1-1.html" rel="nofollow" title="{lang last_thread}">"{IMGDIR}/thread-prev.png" alt="{lang last_thread}" class="vm" />//开源软件:phpfensi.com 
  6. "thread-$down_thread-1-1.html" rel="nofollow" title="{lang next_thread}">"{IMGDIR}/thread-next.png" alt="{lang next_thread}" class="vm" /> 

如果主题被删除就找不到了用这种方法.

三、Discuz X2.0论坛帖“复制链接”伪静态实现方法

打开 /template/default/forum/viewthread.htm 在大约200行左右找到以下代码:

  1. forum.php?mod=viewthread&tid=$_G[tid]$fromuid 
  2. //换成 
  3. forum.php?mod=viewthread&tid=$_G[tid] 
  4. //就可以了  

四、discuz x2帖子列表页默认打开修改为新窗口打开

discuz x2帖子列表默认打开是本窗口打开的,不符合国内用户使用习惯,最正规的修改如下面两个步骤.

1:根目录/static/js/forum.js,找到 atarget函数,改成如下代码:

  1. function atarget(obj) {  
  2. obj.target = getcookie('atarget') ?  '''_blank';  

2:把‘打开新窗口’改成‘本窗口打开’ 修改如下.

根目录/template/default/forum/forumdisplay_list.html文件中,找到如下代码:

  1. "atarget" {if !emptyempty($_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}  
  2. //用下边的替换即可 
  3. "atarget" {if !emptyempty($_G['cookie']['atarget'])}onclick="setatarget(0)" class="y atarget_1"{else}onclick="setatarget(1)" class="y"{/if} title="本窗口打开帖子">本窗口 

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

今天(2011-12-11)又发现一个discuz x2 url地址不规范的地方,就是rss的地址不能自动判断网站设置的是静态还是动态,一律会输出动态的样式,那对于开启了伪静态的朋友来说是个很不好的地方,如何将rss输出结果变成静态化呢,下面是具体修改步骤:

打开source/module/forum/forum_rss.php,代码如下:

1、论坛首页URL标准化:如果不需要标准的人不用修改:

  1. //把 
  2. {$_G[siteurl]}forum.php 
  3. //改为 
  4. {$_G[siteurl]} 

2、主题列表页URL伪静态:把:

  1. {$_G[siteurl]}forum.php?mod=forumdisplay&fid=$rssfid 
  2. //改为 
  3. $_G[siteurl]forum-$forum[fid]-1.html 

3、帖子内容页URL伪静态:把

  1. $_G[siteurl]forum.php?mod=viewthread&tid=$thread[tid] 
  2. //改为 
  3. $_G[siteurl]thread-$thread[tid]-1-1.html  

六、discuz x2 帖子链接统一(帖子链接唯一化)

开启了伪静态的帖子链接是这样的形式:thread-x-y-z.html,其中x是帖子的id(固定不变的),y是帖子的页数(也是固定的),z是帖子所在列表页的页数(这个是变化的,随着帖子回复或者新帖的加入,所处位置就会变化),如何让z不变呢,可能通过修改template/default/forum/forumdisplay_list.htm解决,修改后虽然帖子的url统一了,但是在帖子页里点击“返回列表”,返回的是列表第一页而不是帖子所在的列表页.

找到如下:

  1. "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)"{/ifclass="xst" >$thread[subject] 
  2. //修改为 //开源软件:phpfensi.com
  3. "forum.php?mod=viewthread&tid=$thread[tid]" $thread[highlight]{if $thread['isgroup'] == 1} target="_blank"{/if} onclick="atarget(this)" class="xst">$thread[subject]  

7.下一主题上一主题图片修改.

8.开启伪静态.

全局,seo设置.

论坛主题列表页 {fid},{page}  

论坛主题内容页 {tid},{page},{prevpage}

可用上打勾.

然后 点 查看当前的 Rewrite 规则.

URL 静态化  完工 ..

分享到:
Discuz!X3.1版QQ在线客服号码无法聊天 - ...
Discuz!X3.1版QQ在线客服号码无法聊天 大家有没有发现,当时设置论坛QQ在线客服号码,还是在个人信息里填写QQ号码后,点击DZX在右下角的QQ在线图标或点击帖子浏览里个人信息下的发起QQ聊天,弹出的窗口中都显示抱歉,无法发起临时会话,您可以添加对方为好友以发送消息. 即使你的QQ设置了接受陌生...
解决discuz论坛QQ临时会话点击无效?
今天帮一位站长弄网站,然后发现后台全局添加在线QQ的时候出现了问题当在后台设置论坛QQ在线客服号码,或者在个人信息联系方式里填写QQ号码后,不能发起QQ临时会话了,下面我们一起来看看例子. 点击页面右下角的QQ在线图标或点击帖子左侧个人信息下的发起QQ聊天,弹出的窗口中都显示“抱歉,无法发起临时会话,您可以添加对方...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……