使用 discuz 论坛的站长都知道 discuz 论坛系统不支持对 TAG 的伪静态,网上搜一下 Discuz 标签伪静态教程是什么多,但是大多是正对 2.5 做的修改,今天站长分享一个针对 DiscuzX3.1 最新版 TAG 目录化伪静态,伪静态与目录化伪静态哪一个好大家可以看看 《百度搜索引擎优化指南》 v2.1.2,好了废话不多说,假面教程开始。

首先我们来看看 Discuz 默认的 TAG 标签页面是什么样子的:

标签首页:http://www.xxxx.cn/misc.php?mod=tag

标签内容页:http://www.xxxx.cn/misc.php?mod=tag&id=13

然而通过此教程改变以后的地址是:

标签首页:http://www.xxxx.cn/tag/

标签内容页:http://www.xxxx.cn/tag/13.html

下面修改开始,修改前请记得备份需要修改的文件,养成良好的习惯,我们想来修改帖子文章下面 TAG 的地址

打开 templated/efault(模板目录)forumview/thread_node_body.htm

查找:$var[1]

替换为:$var[1]

这样帖子文章下的标签地址改变了,接着我们修改标签页标签链接的链接。

打开 template/default/tag/tag.htm

查找:$tag[tagname]

替换为:$tag[tagname]

这样标签页的链接修改好了,接下来我么来修改标签列表页导航链接。

打开 emplatedefault ag agitem.htm

查找:{lang tag}

替换为:{lang tag}

这样所有的页面的链接修改好了接下来我们加入伪静态规则,目前之支持 win2003 与 Apache

Apache 的规则为:

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^tag/(.+).html$ misc.php?mod=tag&id=$1

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^tag/$ misc.php?mod=tag

win2003IIS6.0 的规则为:

RewriteRule ^(.*)/tag/(.+).html*$ $1/misc.php?mod=tag&id=$2

RewriteRule ^(.*)/tag/*$ $1/misc.php?mod=tag

PS:以上规则一定要加在最后一条,即

RewriteRule ^(.*)/([a-z]+[a-z0-9_]*)-([a-z0-9_-]+).html(?(.*))*$ $1/plugin.php?id=$2:$3&$5

上面,否则不会成功, 这条规则是插件伪静态的规则就算你的插件不需要伪静态你也要获取这条规则放到伪静态文件里面然后把本教程的规则放到这条规则的上面,获取到规则后你可以在 SEO 伪静态那里勾选掉插件伪静态。

教程到这里还没有完,

Discuz x3.1 默认禁止蜘蛛抓取标签页面,解决方法为:

删除或注释掉根目录下 misc.php 第 18 行的:$discuz->reject_robot(); 这段代码然后打开 robots.txt 文件删除一下两条禁止蜘蛛抓去的规则:

Disallow: /misc.php

Disallow: /*?mod=misc*

修改好以上的文件后到后台更新缓存就可以了.