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