1、首先欄目和文章最好設(shè)置成動態(tài)瀏覽,這樣才不會生成靜態(tài)html文件。
修改數(shù)據(jù)庫
將所有文檔設(shè)置為“僅動態(tài)”,可以進入數(shù)據(jù)庫管理中,執(zhí)行下面命令:
-
update dede_archives set ismake=-1
并將ismake的默認值設(shè)置為 -1即動態(tài)。
將所有欄目設(shè)置為“使用動態(tài)頁”,可以進入數(shù)據(jù)庫管理中,執(zhí)行下面命令:
-
update dede_arctype set isdefault=-1
2、修改重寫的URL。
如果用默認的設(shè)置, 訪問的URL是:
http://www.XXXX.com/plus/view-131-1.html
這樣的形式, 我們是可以更改這種樣式的.
找到文件/include/helpers/channelunit.helper.php打開.
可以看到有這樣的語句
-
retu $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html';
這就是文章的url格式. 修改為
retu "/view-".$aid.'-1.html';
找到這是列表的重寫url.
-
$reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;
這是列表的重寫url. 修改為:
$reurl = "/list-".$typeid.".html";
3、需要設(shè)置重寫規(guī)則。
在系統(tǒng)目錄下加一個 .htaccess文件,在里面加上下面的:
-
RewriteEngine On
-
RewriteRule ^list-([0-9]+)\.html$ /plus/list.php?tid=$1
-
RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3
-
RewriteRule ^view-([0-9]+)-1\.html$ /plus/view.php?arcID=$1
-
RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2
如果你的系統(tǒng)支持url重寫,到這里就可以用偽靜態(tài)訪問了.這樣就完成了設(shè)置。
更進一步,還可以把view換成自己的任何詞語,這也要把include/arc.archives.class.php文件中的view也一樣替換。
發(fā)布選項: 生成HTML 僅動態(tài)瀏覽 發(fā)文章的時候選一下就可以了。為了以后升級,盡量減少修改文件。
更多偽靜態(tài)設(shè)置方法:
頻道|列表頁|文章頁偽靜態(tài)
主要通過修改GetFileName()、GetTypeUrl()這兩個函數(shù)實現(xiàn)。DedeCms V5.3、DedeCms V5.5和DedeCms V5.6版本,打開/include/channelunit.func.php進行修改。注意:DedeCms V5.7,此文件路徑更改了,你打開/include/helpers/channelunit.helper.php即可。
a.將GetFileName()中的如下代碼:
-
//動態(tài)文章
-
if($cfg_rewrite == 'Y')
-
{
-
retu $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html';
-
}
替換為
//動態(tài)文章
-
if($cfg_rewrite == 'Y')
-
{
-
retu "/archives/view-".$aid.'-1.html';
-
}
將文章頁默認的/plus/view-1-1.html鏈接格式改為/archives/view-1-1.html,這個隨個人喜歡,不作更改也行。
b.將GetTypeUrl()中的如下代碼:
-
//動態(tài)
-
$reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;
替換為
-
//動態(tài)
-
$reurl = "/category/list-".$typeid.".html";
這步必須修改,即讓你的頻道或是列表頁URL變更為/category/list-1.html形式。
列表分頁偽靜態(tài)
打開/include/arc.listview.class.php,找到獲取動態(tài)的分頁列表GetPageListDM()函數(shù)末尾處:
-
$plist = str_replace('.php?tid=', '-', $plist);
替換為
-
$plist = str_replace('plus', 'category', $plist);//將默認的plus替換成category
-
$plist = str_replace('.php?tid=', '-', $plist);
將列表分頁默認鏈接格式/plus/list-1-2-1.html修改為/category/list-1-2-1.html,這步也可以不作更改。
文章分頁偽靜態(tài)
打開/include/arc.archives.class.php,找到獲取動態(tài)的分頁列表GetPagebreakDM()函數(shù)末尾處:
-
$PageList = str_replace(".php?aid=","-",$PageList);
替換為
-
$plist = str_replace('plus', 'archives', $plist);//將默認的plus替換成archives
-
$PageList = str_replace(".php?aid=","-",$PageList);
這步不作修改也可以,只是個人喜好問題。
TAG標簽偽靜態(tài)
DedeCms默認的TAG標簽URL,形如/tags.php?/dedecms5.7/,非常之難看。打開/include/taglib/tag.lib.php,找到lib_tag()函數(shù)下的:
-
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
替換為
-
$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword'])."/";
到這里,TAG標簽URL中的“.php?”號就去掉了。
搜索偽靜態(tài)
DedeCms搜索URL靜態(tài)化比較麻煩,附帶參數(shù)多不說,參數(shù)也可能變化,像搜索結(jié)果分頁的URL就特麻煩,偽靜態(tài)規(guī)則匹配復(fù)雜。小拼就偷下懶,將搜索URL中“search.php?…”直接替換為“search.html?…”,至于“?”號之后的參數(shù)以任意字符進行匹配。
依次打開include文件夾下的channelunit.func.php、arc.searchview.class.php、arc.taglist.class.php以及/include/taglib/hotwords.lib.php,查找“search.php?”替換為“search.html?”即可。
問答偽靜態(tài)
問答模塊的偽靜態(tài)實現(xiàn)比較簡單,只要后臺開啟偽靜態(tài)支持即可,至于個別頁面,如ask目錄下的browser.php、question.php以及include目錄下的common.inc.php、functi*****.inc.php都需要簡單修改才可以匹配偽靜態(tài)規(guī)則。注意一點,DedeCms V5.7問答模塊整體升級了,之前的規(guī)則已經(jīng)不適用了,小拼以后會專門寫個教程供大家參考的。
DedeCms偽靜態(tài)注意事項
1)以上提供的DedeCms偽靜態(tài)修改以及規(guī)則都是按照個人的修改步驟來的,僅供參考,你可以根據(jù)站點的實際情況作相應(yīng)調(diào)整;
2)偽靜態(tài)實現(xiàn)思路,即根據(jù)理想的URL結(jié)構(gòu)寫好偽靜態(tài)規(guī)則,然后對程序進行相應(yīng)修改,并沒有你想象中的那么復(fù)雜;
3)不會程序、不會正則都沒有關(guān)系,但是思路一定要清晰,還有就是禁得住“折騰”,多研究,搞透了,對提升自己也有極大好處。