論壇Discuz!分區版塊(gid)偽靜態 forum.php gid1

在做完Discuz!論壇全站偽靜態(Discuz!論壇全站偽靜態方法)之後,餘鬥發現一個問題,就是分區版塊的鏈接並沒有被靜態化,還是下面這種格式:/forum.php?gid=1,餘鬥想要實現偽靜態為:/gid-1.html。需要進一步處理,其實很簡單,兩步即可:

一、修改模板文件template/default/forum/discuz.htm,找到代碼(大概在第345行):

forum.php?gid=$cat

修改為:

gid-$cat.html

修改版塊頁模板文件source/module/forum/forum_forumdisplay.php,找到代碼(大概在第19行):

Location: forum.php?gid=$_G

修改為:

Location: gid-$_G.html

找到代碼(大概在第75行):

forum.php?gid='.$forum_up.'

修改為:

gid-'.$forum_up.'.html

找到代碼(大概在第84行):

forum.php?gid='.$forum_top.'

修改為:

gid-'.$forum_top.'.html

修改帖子模板文件:打開source/module/forum/forum_viewthread.php 文件,找到代碼(大概在第131和137行共兩處):

? 'forum.php?gid='.$fup :

修改為:

? 'gid-'.$fup.'.html' :

修改發帖頁模板文件:打開source/module/forum/forum_post.php 文件,找到代碼(大概在第125和131行共兩處):

? 'forum.php?gid='.$fup :

修改為:

? 'gid-'.$fup.'.html' :

二、把以下偽靜態規則加入到我們做好的偽靜態規則中,IIS服務器添加:

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^gid-(+)\.html$ forum.php?gid=$1%1

Apache服務器添加:

RewriteRule ^(.*)/gid-(+)\.html(\?(.*))*$ $1/forum\.php\?gid=$2

最後要注意的是,這段偽靜態規則一樣要加在欄目規則的偽靜態規則上面,Apache的是:

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^forum-(\w+)-(+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1

IIS的是:

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^forum-(\w+)-(+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1

附餘鬥完整的Discuz!偽靜態規則文件(Apache服務器中的.htaccess文件)。

Nginx 服務器添加:
分類