找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1181|回复: 0

[分享] DEDECMS全站自动伪静态方法

[复制链接]
发表于 2018-6-25 19:54:10 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
dedecms全站伪静态教程分为五部分,包括“Apache设置、.htaccess文件设置、首页伪静态、列表页伪静态、文章页伪静态”。
用4.0测试OK,5.X没测。
一、Apache文件设置
这是重头戏,以前用本地测试时因 httpd.conf 文件没设置好,搞得焦头烂额。
1、如果是虚拟主机,一般 apache 的 LoadModule rewrite_module modules/mod_rewrite.so 是开启的,请咨询你的主机提供商以确认是否支持伪静态。
2、如果是自己的服务器或本地机器,请按以下设置:
关闭 apache 服务。
打开 httpd.conf 文件(一般放在apache安装目录的conf目录下)把 #LoadModule rewrite_module modules/mod_rewrite.so 前的 # 号去掉,代表开启 rewrite 规则。
搜索 “AllowOverride None”(不包括引号,下同) ,有多个,全部替换为 “AllowOverride All”。
开启 apache 服务。
二、.htaccess文件设置
在网站根目录建一 .htaccess 文件,内容为:
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteRule ^(.*)index/.html$ $1/index.php
  4. RewriteRule ^(.*)list-([0-9]+)/.html$ $1/plus/list.php?tid=$2
  5. RewriteRule ^(.*)list-([0-9]+)-([0-9]+)/.html$ $1/plus/list.php?typeid=$2&PageNo=$3
  6. RewriteRule ^(.*)view-([0-9]+).html$ $1/plus/view.php?aid=$2
  7. RewriteRule ^(.*)view-([0-9]+)-([0-9]+).html$ $1/plus/view.php?aid=$2&pageno=$3
复制代码

三、dedecms首页伪静态
不要更新首页html就行。如果已更新,请删除index.html即可。
四、dedecms列表页伪静态
1、打开 /include/inc_arclist_view.php 找到
//---------------------------------
//获取动态的分页列表
//---------------------------------
把它下面的函数改成以下的:
  1. function GetPageListDM($list_len,$listitem="index,end,pre,next,pageno")
  2. {
  3. $prepage="";
  4. $nextpage="";
  5. $prepagenum = $this->PageNo-1;
  6. $nextpagenum = $this->PageNo+1;
  7. if($list_len==""||ereg("[^0-9]",$list_len)) $list_len=3;
  8. $totalpage = ceil($this->TotalResult/$this->PageSize);
  9. if($totalpage<=1 && $this->TotalResult>0) return "共1页/".$this->TotalResult."条记录";
  10. if($this->TotalResult == 0) return "共0页".$this->TotalResult."条记录";
  11. $maininfo = "共{$totalpage}页/".$this->TotalResult."条记录";
  12. $purl = $this->GetCurUrl();
  13. $geturl = "typeid=".$this->TypeID."&TotalResult=".$this->TotalResult."&";
  14. $gettypeid =$this->TypeID."-";
  15. //$hidenform = "<input type='hidden' name='typeid' value='".$this->TypeID."'>";
  16. //$hidenform .= "<input type='hidden' name='TotalResult' value='".$this->TotalResult."'>";
  17. $purl .= "?".$geturl;
  18. //获得上一页和下一页的链接
  19. if($this->PageNo != 1){
  20. $prepage.="<a href='list-".$gettypeid."$prepagenum.html'>上一页</a>";
  21. $indexpage="<a href='list-".$gettypeid."1.html'>首页</a>";
  22. }
  23. else{
  24. $indexpage="首页";
  25. }
  26. if($this->PageNo!=$totalpage && $totalpage>1){
  27. $nextpage.="<a href='list-".$gettypeid."$nextpagenum.html'>下一页</a>";
  28. $endpage="<a href='list-".$gettypeid."$totalpage.html'>末页</a>";
  29. }
  30. else{
  31. $endpage="末页";
  32. }
  33. //获得数字链接
  34. $listdd="";
  35. $total_list = $list_len * 2 + 1;
  36. if($this->PageNo >= $total_list) {
  37. $j = $this->PageNo-$list_len;
  38. $total_list = $this->PageNo+$list_len;
  39. if($total_list>$totalpage) $total_list=$totalpage;
  40. }else{
  41. $j=1;
  42. if($total_list>$totalpage) $total_list=$totalpage;
  43. }
  44. for($j;$j<=$total_list;$j++){
  45. $listdd.="<a href='list-".$gettypeid."$j.html'>".$j."</a>";
  46. }
  47. $plist .= $maininfo.$indexpage.$prepage.$listdd.$nextpage.$endpage;
  48. return $plist;
  49. }
复制代码

2、打开 /include/inc_channel_unit_functions.php 查找
  1. $reurl = $GLOBALS["cfg_plus_dir"]."/list.php?tid=".$typeid;
复制代码

改成
  1. $reurl = "/list-".$typeid.".html"; //列表页伪静态
复制代码

五、dedecms文章页伪静态
1、打开 /include/inc_archives_view.php ,有两处修改的地方,
1.1 找到:
  1. //------------------------
  2. //获得动态页面分页列表
  3. //------------------------
  4. function GetPagebreakDM($totalPage,$nowPage,$aid)
  5. {
  6. if($totalPage==1){ return ""; }
  7. $PageList = "共".$totalPage."页: ";
  8. $nPage = $nowPage-1;
  9. $lPage = $nowPage+1;
  10. if($nowPage==1) $PageList.="上一页 ";
  11. else{
  12. if($nPage==1) $PageList.="<a href='view.php?aid=$aid'>上一页</a> ";
  13. else $PageList.="<a href='view.php?aid=$aid&pageno=$nPage'>上一页</a> ";
  14. }
  15. for($i=1;$i<=$totalPage;$i++)
  16. {
  17. if($i==1){
  18. if($nowPage!=1) $PageList.="<a href='view.php?aid=$aid'>[1]</a> ";
  19. else $PageList.="1 ";
  20. }else{
  21. $n = $i;
  22. if($nowPage!=$i) $PageList.="<a href='view.php?aid=$aid&pageno=$i'>[".$n."]</a> ";
  23. else $PageList.="$n ";
  24. }
  25. }
  26. if($lPage <= $totalPage) $PageList.="<a href='view.php?aid=$aid&pageno=$lPage'>下一页</a> ";
  27. else $PageList.= "下一页 ";
  28. return $PageList;
  29. }
复制代码

修改为:
  1. //获得伪静态页面分页列表
  2. function GetPagebreakDM($totalPage,$nowPage,$aid)
  3. {
  4. if($totalPage==1){ return ""; }
  5. $PageList = "共".$totalPage."页: ";
  6. $nPage = $nowPage-1;
  7. $lPage = $nowPage+1;
  8. if($nowPage==1) $PageList.="上一页 ";
  9. else{
  10. if($nPage==1) $PageList.="<a href='view-$aid'>上一页</a> ";
  11. else $PageList.="<a href='view-$aid-$nPage.html'>上一页</a> ";
  12. }
  13. for($i=1;$i<=$totalPage;$i++)
  14. {
  15. if($i==1){
  16. if($nowPage!=1) $PageList.="<a href='view-$aid'>[1]</a> ";
  17. else $PageList.="1 ";
  18. }else{
  19. $n = $i;
  20. if($nowPage!=$i) $PageList.="<a href='view-$aid-$i.html'>[".$n."]</a> ";
  21. else $PageList.="$n ";
  22. }
  23. }
  24. if($lPage <= $totalPage) $PageList.="<a href='view-$aid-$lPage.html'>下一页</a> ";
  25. else $PageList.= "下一页 ";
  26. return $PageList;
  27. }
复制代码

1.2 找到:
  1. //-------------------------
  2. //获得动态页面小标题
  3. //-------------------------
  4. function GetPageTitlesDM($styleName,$pageNo)
  5. {
  6. if($this->TotalPage==1){ return ""; }
  7. if(count($this->SplitTitles)==0){ return ""; }
  8. $i=1;
  9. $aid = $this->ArcID;
  10. if($styleName=='link')
  11. {
  12. $revalue = "";
  13. foreach($this->SplitTitles as $k=>$v){
  14. if($i==1) $revalue .= "<a href='view.php?aid=$aid&pageno=$i'>$v</a> ";
  15. else{
  16. if($pageNo==$i) $revalue .= " $v ";
  17. else $revalue .= "<a href='view.php?aid=$aid&pageno=$i'>$v</a> ";
  18. }
  19. $i++;
  20. }
  21. }else
  22. {
  23. $revalue = "<select id='dedepagetitles' onchange='location.href=this.options[this.selectedIndex].value;'>";
  24. foreach($this->SplitTitles as $k=>$v){
  25. if($i==1) $revalue .= "<option value='".$this->Fields['phpurl']."/view.php?aid=$aid&pageno=$i'& gt;{$i}、{$v}</option>";
  26. else{
  27. if($pageNo==$i) $revalue .= "<option value='".$this->Fields['phpurl']."/view.php?aid=$aid&pageno=$i' selected>{$i}、{$v}</option>";
  28. else $revalue .= "<option value='".$this->Fields['phpurl']."/view.php?aid=$aid&pageno=$i'& gt;{$i}、{$v}</option>";
  29. }
  30. $i++;
  31. }
  32. $revalue .= "</select>";
  33. }
  34. return $revalue;
  35. }
复制代码

修改为:
  1. //获取伪静态页面小标题
  2. function GetPageTitlesDM($styleName,$pageNo)
  3. {
  4. if($this->TotalPage==1){ return ""; }
  5. if(count($this->SplitTitles)==0){ return ""; }
  6. $i=1;
  7. $aid = $this->ArcID;
  8. if($styleName=='link')
  9. {
  10. $revalue = "";
  11. foreach($this->SplitTitles as $k=>$v){
  12. if($i==1) $revalue .= "<a href='view-$aid-$i.html'>$v</a> ";
  13. else{
  14. if($pageNo==$i) $revalue .= " $v ";
  15. else $revalue .= "<a href='view-$aid-$i.html'>$v</a> ";
  16. }
  17. $i++;
  18. }
  19. }else
  20. {
  21. $revalue = "<select id='dedepagetitles' onchange='location.href=this.options[this.selectedIndex].value;'>";
  22. foreach($this->SplitTitles as $k=>$v){
  23. if($i==1) $revalue .= "<option value='".$this->Fields['phpurl']."/view-$aid-$i.html'>{$i}、{$v}& lt;/option>";
  24. else{
  25. if($pageNo==$i) $revalue .= "<option value='".$this->Fields['phpurl']."/view-$aid-$i.html' selected>{$i}、{$v}</option>";
  26. else $revalue .= "<option value='".$this->Fields['phpurl']."/view-$aid-$i'>{$i}、{$v}< /option>";
  27. }
  28. $i++;
  29. }
  30. $revalue .= "</select>";
  31. }
  32. return $revalue;
  33. }
复制代码

2、打开 /include/inc_channel_unit_functions.php 查找
  1. return $GLOBALS['cfg_plus_dir']."/view.php?aid=$aid";
复制代码

改成
  1. return "/view-$aid.html";//文章页伪静态
复制代码

六、完工。把栏目和文章都改为动态,刷新,dedecms全站伪静态成功。
把栏目和文章批量修改为动态的SQL语句:
  1. update dede_arctype set isdefault=-1;
  2. update dede_archives set ismake=-1;
复制代码

更新:
DEDECMS搜索的伪静态在 .htaccess 文件里加入如下两句即可:
  1. RewriteRule ^(.*)/search/([^/]*)$   $1/plus/search/.php/?keyword=$2
  2. RewriteRule ^(.*)/search/([^/]*)/(/d)$   $1/plus/search/.php/?keyword=$2&PageNo=$3
复制代码

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

▶专业解决各类DiscuzX疑难杂症、discuz版本升级 、网站搬家 和 云服务器销售!▶有偿服务QQ 860855665 更多精品应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-2-1 17:48 , Processed in 0.041533 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表