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

修改好以上的檔案後到後臺更新快取就可以了.