POST TIME:2021-05-21 22:44
dedecms全站偽靜態(tài)教程分為五部分,包括“Apache設(shè)置、.htaccess文件設(shè)置、首頁(yè)偽靜態(tài)、列表頁(yè)偽靜態(tài)、文章頁(yè)偽靜態(tài)”。
用4.0測(cè)試OK,5.X沒(méi)測(cè)。
一、Apache文件設(shè)置
這是重頭戲,以前用本地測(cè)試時(shí)因 httpd.conf 文件沒(méi)設(shè)置好,搞得焦頭爛額。
1、如果是虛擬主機(jī),一般 apache 的 LoadModule rewrite_module modules/mod_rewrite.so 是開啟的,請(qǐng)咨詢你的主機(jī)提供商以確認(rèn)是否支持偽靜態(tài)。
2、如果是自己的服務(wù)器或本地機(jī)器,請(qǐng)按以下設(shè)置:
關(guān)閉 apache 服務(wù)。
打開 httpd.conf 文件(一般放在apache安裝目錄的conf目錄下)把 #LoadModule rewrite_module modules/mod_rewrite.so 前的 # 號(hào)去掉,代表開啟 rewrite 規(guī)則。
搜索 “AllowOverride None”(不包括引號(hào),下同) ,有多個(gè),全部替換為 “AllowOverride All”。
開啟 apache 服務(wù)。
二、.htaccess文件設(shè)置
在網(wǎng)站根目錄建一 .htaccess 文件,內(nèi)容為:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)index/.html$ $1/index.php
RewriteRule ^(.*)list-([0-9]+)/.html$ $1/plus/list.php?tid=$2
RewriteRule ^(.*)list-([0-9]+)-([0-9]+)/.html$ $1/plus/list.php?typeid=$2&PageNo=$3
RewriteRule ^(.*)view-([0-9]+).html$ $1/plus/view.php?aid=$2
RewriteRule ^(.*)view-([0-9]+)-([0-9]+).html$ $1/plus/view.php?aid=$2&pageno=$3
三、dedecms首頁(yè)偽靜態(tài)
不要更新首頁(yè)html就行。如果已更新,請(qǐng)刪除index.html即可。
四、dedecms列表頁(yè)偽靜態(tài)
1、打開 /include/inc_arclist_view.php 找到
//---------------------------------
//獲取動(dòng)態(tài)的分頁(yè)列表
//---------------------------------
把它下面的函數(shù)改成以下的:
function GetPageListDM($list_len,$listitem="index,end,pre,next,pageno")
{
$prepage="";
$nextpage="";
$prepagenum = $this->PageNo-1;
$nextpagenum = $this->PageNo+1;
if($list_len==""||ereg("[^0-9]",$list_len)) $list_len=3;
$totalpage = ceil($this->TotalResult/$this->PageSize);
if($totalpage<=1 && $this->TotalResult>0) return "共1頁(yè)/".$this->TotalResult."條記錄";
if($this->TotalResult == 0) return "共0頁(yè)".$this->TotalResult."條記錄";
$maininfo = "共{$totalpage}頁(yè)/".$this->TotalResult."條記錄";
$purl = $this->GetCurUrl();
$geturl = "typeid=".$this->TypeID."&TotalResult=".$this->TotalResult."&";
$gettypeid =$this->TypeID."-";
//$hidenform = "<input type='hidden' name='typeid' value='".$this->TypeID."'>";
//$hidenform .= "<input type='hidden' name='TotalResult' value='".$this->TotalResult."'>";
$purl .= "?".$geturl;
//獲得上一頁(yè)和下一頁(yè)的鏈接
if($this->PageNo != 1){
$prepage.="<a href='list-".$gettypeid."$prepagenum.html'>上一頁(yè)</a>";
$indexpage="<a href='list-".$gettypeid."1.html'>首頁(yè)</a>";
}
else{
$indexpage="首頁(yè)";
}
if($this->PageNo!=$totalpage && $totalpage>1){
$nextpage.="<a href='list-".$gettypeid."$nextpagenum.html'>下一頁(yè)</a>";
$endpage="<a href='list-".$gettypeid."$totalpage.html'>末頁(yè)</a>";
}
else{
$endpage="末頁(yè)";
}
//獲得數(shù)字鏈接
$listdd="";
$total_list = $list_len * 2 + 1;
if($this->PageNo >= $total_list) {
$j = $this->PageNo-$list_len;
$total_list = $this->PageNo+$list_len;
if($total_list>$totalpage) $total_list=$totalpage;
}else{
$j=1;
if($total_list>$totalpage) $total_list=$totalpage;
}
for($j;$j<=$total_list;$j++){
$listdd.="<a href='list-".$gettypeid."$j.html'>".$j."</a>";
}
$plist .= $maininfo.$indexpage.$prepage.$listdd.$nextpage.$endpage;
return $plist;
}
2、打開 /include/inc_channel_unit_functions.php 查找
$reurl = $GLOBALS["cfg_plus_dir"]."/list.php?tid=".$typeid;
改成
$reurl = "/list-".$typeid.".html"; //列表頁(yè)偽靜態(tài)
五、dedecms文章頁(yè)偽靜態(tài)
1、打開 /include/inc_archives_view.php ,有兩處修改的地方,
1.1 找到:
//------------------------
//獲得動(dòng)態(tài)頁(yè)面分頁(yè)列表
//------------------------
function GetPagebreakDM($totalPage,$nowPage,$aid)
{
if($totalPage==1){ return ""; }
$PageList = "共".$totalPage."頁(yè): ";
$nPage = $nowPage-1;
$lPage = $nowPage+1;
if($nowPage==1) $PageList.="上一頁(yè) ";
else{
if($nPage==1) $PageList.="<a href='view.php?aid=$aid'>上一頁(yè)</a> ";
else $PageList.="<a href='view.php?aid=$aid&pageno=$nPage'>上一頁(yè)</a> ";
}
for($i=1;$i<=$totalPage;$i++)
{
if($i==1){
if($nowPage!=1) $PageList.="<a href='view.php?aid=$aid'>[1]</a> ";
else $PageList.="1 ";
}else{
$n = $i;
if($nowPage!=$i) $PageList.="<a href='view.php?aid=$aid&pageno=$i'>[".$n."]</a> ";
else $PageList.="$n ";
}
}
if($lPage <= $totalPage) $PageList.="<a href='view.php?aid=$aid&pageno=$lPage'>下一頁(yè)</a> ";
else $PageList.= "下一頁(yè) ";
return $PageList;
}
修改為:
//獲得偽靜態(tài)頁(yè)面分頁(yè)列表
function GetPagebreakDM($totalPage,$nowPage,$aid)
{
if($totalPage==1){ return ""; }
$PageList = "共".$totalPage."頁(yè): ";
$nPage = $nowPage-1;
$lPage = $nowPage+1;
if($nowPage==1) $PageList.="上一頁(yè) ";
else{
if($nPage==1) $PageList.="<a href='view-$aid'>上一頁(yè)</a> ";
else $PageList.="<a href='view-$aid-$nPage.html'>上一頁(yè)</a> ";
}
for($i=1;$i<=$totalPage;$i++)
{
if($i==1){
if($nowPage!=1) $PageList.="<a href='view-$aid'>[1]</a> ";
else $PageList.="1 ";
}else{
$n = $i;
if($nowPage!=$i) $PageList.="<a href='view-$aid-$i.html'>[".$n."]</a> ";
else $PageList.="$n ";
}
}
if($lPage <= $totalPage) $PageList.="<a href='view-$aid-$lPage.html'>下一頁(yè)</a> ";
else $PageList.= "下一頁(yè) ";
return $PageList;
}
1.2 找到:
//-------------------------
//獲得動(dòng)態(tài)頁(yè)面小標(biāo)題
//-------------------------
function GetPageTitlesDM($styleName,$pageNo)
{
if($this->TotalPage==1){ return ""; }
if(count($this->SplitTitles)==0){ return ""; }
$i=1;
$aid = $this->ArcID;
if($styleName=='link')
{
$revalue = "";
foreach($this->SplitTitles as $k=>$v){
if($i==1) $revalue .= "<a href='view.php?aid=$aid&pageno=$i'>$v</a> ";
else{
if($pageNo==$i) $revalue .= " $v ";
else $revalue .= "<a href='view.php?aid=$aid&pageno=$i'>$v</a> ";
}
$i++;
}
}else
{
$revalue = "<select id='dedepagetitles' onchange='location.href=this.options[this.selectedIndex].value;'>";
foreach($this->SplitTitles as $k=>$v){
if($i==1) $revalue .= "<option value='".$this->Fields['phpurl']."/view.php?aid=$aid&pageno=$i'& gt;{$i}、{$v}</option>";
else{
if($pageNo==$i) $revalue .= "<option value='".$this->Fields['phpurl']."/view.php?aid=$aid&pageno=$i' selected>{$i}、{$v}</option>";
else $revalue .= "<option value='".$this->Fields['phpurl']."/view.php?aid=$aid&pageno=$i'& gt;{$i}、{$v}</option>";
}
$i++;
}
$revalue .= "</select>";
}
return $revalue;
}
修改為:
//獲取偽靜態(tài)頁(yè)面小標(biāo)題
function GetPageTitlesDM($styleName,$pageNo)
{
if($this->TotalPage==1){ return ""; }
if(count($this->SplitTitles)==0){ return ""; }
$i=1;
$aid = $this->ArcID;
if($styleName=='link')
{
$revalue = "";
foreach($this->SplitTitles as $k=>$v){
if($i==1) $revalue .= "<a href='view-$aid-$i.html'>$v</a> ";
else{
if($pageNo==$i) $revalue .= " $v ";
else $revalue .= "<a href='view-$aid-$i.html'>$v</a> ";
}
$i++;
}
}else
{
$revalue = "<select id='dedepagetitles' onchange='location.href=this.options[this.selectedIndex].value;'>";
foreach($this->SplitTitles as $k=>$v){
if($i==1) $revalue .= "<option value='".$this->Fields['phpurl']."/view-$aid-$i.html'>{$i}、{$v}& lt;/option>";
else{
if($pageNo==$i) $revalue .= "<option value='".$this->Fields['phpurl']."/view-$aid-$i.html' selected>{$i}、{$v}</option>";
else $revalue .= "<option value='".$this->Fields['phpurl']."/view-$aid-$i'>{$i}、{$v}< /option>";
}
$i++;
}
$revalue .= "</select>";
}
return $revalue;
}
2、打開 /include/inc_channel_unit_functions.php 查找
return $GLOBALS['cfg_plus_dir']."/view.php?aid=$aid";
改成
return "/view-$aid.html";//文章頁(yè)偽靜態(tài)
六、完工。把欄目和文章都改為動(dòng)態(tài),刷新,dedecms全站偽靜態(tài)成功。
把欄目和文章批量修改為動(dòng)態(tài)的SQL語(yǔ)句:
update dede_arctype set isdefault=-1;
update dede_archives set ismake=-1;
更新:
DEDECMS搜索的偽靜態(tài)在 .htaccess 文件里加入如下兩句即可:
RewriteRule ^(.*)/search/([^/]*)$ $1/plus/search/.php/?keyword=$2
RewriteRule ^(.*)/search/([^/]*)/(/d)$ $1/plus/search/.php/?keyword=$2&PageNo=$3