使用 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*

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