Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

教大家如何修改DISCUZ7.2静态化规则,不愿意学习的菜鸟绕道。

[复制链接]
zhaolinlang 发表于 2010-5-29 00:45:31 | 显示全部楼层 |阅读模式
本帖最后由 zhaolinlang 于 2010-5-29 01:54 编辑

大家已经厌恶了forum-1-1.html的版块列表地址和thread-1-1-1.html的帖子内容页地址吧?

看到www.tiboo.cn的静态化地址弄得神乎其神,很羡慕吧? 在DISCUZ X中已经实现了后台自定义,不过7.2还是没有,还有很多站长是坚持在7.2的,包括我。

还有更重要一点,据不完全证明:更改过的静态化地址,有利于SEO 。

虚拟主机/不可自定义规则绕道,不愿意学习的菜鸟也绕道。

演示:列表页:http://www.chunxilu.org/list-15-page-1.html
       内容页:http://www.chunxilu.org/read-9278.html
1.首先我们需要修改2个文件:global.func.php (控制论坛的)和 request.func.php(这个主要是控制数据调用的),忘了给大家说这2个文件在include目录。
打开global.func.php找到:

  1. function rewrite_thread($tid, $page = 0, $prevpage = 0, $extra = '') {
  2. return '<a href="thread-'.$tid.'-'.($page ? $page : 1).'-'.($prevpage && !IS_ROBOT ? $prevpage : 1).'.html"'.stripslashes($extra).'>';
  3. }
  4. function rewrite_forum($fid, $page = 0, $extra = '') {
  5. return '<a href="forum-'.$fid.'-'.($page ? $page : 1).'.html"'.stripslashes($extra).'>';
  6. }
  7. function rewrite_space($uid, $username, $extra = '') {
  8. $GLOBALS['rewritecompatible'] && $username = rawurlencode($username);
  9. return '<a href="space-'.($uid ? 'uid-'.$uid : 'username-'.$username).'.html"'.stripslashes($extra).'>';
  10. }
  11. function rewrite_tag($name, $extra = '') {
  12. $GLOBALS['rewritecompatible'] && $name = rawurlencode($name);
  13. return '<a href="tag-'.$name.'.html"'.stripslashes($extra).'>';
  14. }
复制代码
大家应该有些明白了吧?
我们来修改板块列表为:bankuai-2-page-1.html 修改主题内容为show-888-p-1-n-1.html
我们就要把如上代码修改为
  1. function rewrite_thread($tid, $page = 0, $prevpage = 0, $extra = '') {
  2. return '<a href="show-'.$tid.'-p-'.($page ? $page : 1).'-n-'.($prevpage && !IS_ROBOT ? $prevpage : 1).'.html"'.stripslashes($extra).'>';
  3. }
  4. function rewrite_forum($fid, $page = 0, $extra = '') {
  5. return '<a href="bankuai-'.$fid.'-page-'.($page ? $page : 1).'.html"'.stripslashes($extra).'>';
  6. }
复制代码
这里我们只管主题列表和内容页,其他自己想办法。
保存,以动态forumdisplay.php?fid=2刷新一下,看你的主题列表页是不是变了呢?
当然了,这时候一定是死链的。因为你的静态化规则还没成立。
这时,我们打开静态化rewrite修改,这里以IIS为例,打开httpd.ini修改其中的
  1. RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay\.php\?fid=$2&page=$3
  2. RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread\.php\?tid=$2&extra=page\%3D$4&page=$3
复制代码
为:
  1. RewriteRule ^(.*)/bankuai-([0-9]+)-page-([0-9]+)\.html$ $1/forumdisplay\.php\?fid=$2&page=$3
  2. RewriteRule ^(.*)/show-([0-9]+)-p-([0-9]+)-n-([0-9]+)\.html$ $1/viewthread\.php\?tid=$2&extra=page\%3D$4&page=$3
复制代码
保存,再次打开是不是成功了呢?

当然了,我这里只是给大家大概说一下,具体你想要修改为什么样,自己多研究一下!此楼只是修改了论坛规则,后台数据调用依然还会是thread-1-1-1.html,我再2楼给大家说怎么做。
 楼主| zhaolinlang 发表于 2010-5-29 00:45:51 | 显示全部楼层
本帖最后由 zhaolinlang 于 2010-5-29 01:29 编辑

这楼来跟大家讲修改数据调用的,修改数据调用就显得简单多了。
打开request.func.php找到:
if($rewritestatus) {
  $searcharray = $replacearray = array();
  if($GLOBALS['rewritestatus'] & 1) {
   $searcharray[] = "/\<a href\=\'".preg_quote($boardurl, '/')."forumdisplay\.php\?fid\=(\d+)\'/";
   $replacearray[] = "<a href='{$boardurl}forum-\\1-1.html'";
  }
  if($GLOBALS['rewritestatus'] & 2) {
   $searcharray[] = "/\<a href\=\'".preg_quote($boardurl, '/')."viewthread\.php\?tid\=(\d+)\'/";
   $replacearray[] = "<a href='{$boardurl}thread-\\1-1-1.html'";

把其中的$replacearray[] = "<a href='{$boardurl}forum-\\1-1.html'"; 修改为$replacearray[] = "<a href='{$boardurl}bankuai-\\1-page-1.html'";
然后,
修改
  $replacearray[] = "<a href='{$boardurl}thread-\\1-1-1.html'"; 为  $replacearray[] = "<a href='{$boardurl}show-\\1-p-1-n-1.html'";

更新数据调用的缓存文件,看看 是不是可以了呢?!!

顺便AD一下签名。。


回复

使用道具 举报

上山下石 发表于 2010-5-29 01:32:25 | 显示全部楼层
这里也支持个.
回复

使用道具 举报

玮玮来啦 发表于 2010-5-29 01:58:20 | 显示全部楼层
学习到了,有的时候我还以为他们不是用discuz程序,原来只是改一下静态地址。
回复

使用道具 举报

hello-girl 发表于 2010-5-29 12:14:15 | 显示全部楼层
支持 楼主 学习了。
回复

使用道具 举报

applepaipai 发表于 2010-5-29 18:42:29 | 显示全部楼层
LZ有心了,支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-29 15:26 , Processed in 0.105141 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表