[PHP]DEDECMS全站伪静态详细教程(首页、列表、文章页)

[PHP]DEDECMS全站伪静态详细教程(首页、列表、文章页)

大家好,又见面了,我是全栈君。

本人比较懒,相信不少朋友也是,懒得每次去生成dedecms的HTML,同时为了现已不太有效的伪静态优化,所以还是搞搞伪静态吧。

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 文件,内容为:

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首页伪静态

不要更新首页html就行。如果已更新,请删除index.html即可。

四、dedecms列表页伪静态

1、打开 /include/inc_arclist_view.php 找到

//———————————
//获取动态的分页列表
//———————————

把它下面的函数改成以下的:

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页/”.$this->TotalResult.”条记录”; 
        if($this->TotalResult == 0) return “共0页”.$this->TotalResult.”条记录”; 
        $maininfo = “共{$totalpage}页/”.$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;
        
        //获得上一页和下一页的链接
        if($this->PageNo != 1){

            $prepage.=”<a href=’list-“.$gettypeid.”$prepagenum.html’>上一页</a>”;
            $indexpage=”<a href=’list-“.$gettypeid.”1.html’>首页</a>”;
        }
        else{

            $indexpage=”首页”;
        }    
        
        if($this->PageNo!=$totalpage && $totalpage>1){

            $nextpage.=”<a href=’list-“.$gettypeid.”$nextpagenum.html’>下一页</a>”;
            $endpage=”<a href=’list-“.$gettypeid.”$totalpage.html’>末页</a>”;
        }
        else{

            $endpage=”末页”;
        }
        //获得数字链接
        $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”; //列表页伪静态

五、dedecms文章页伪静态

1、打开 /include/inc_archives_view.php ,有两处修改的地方,

1.1 找到:

        //————————
         //获得动态页面分页列表
         //————————
   function GetPagebreakDM($totalPage,$nowPage,$aid)
        {

                if($totalPage==1){ return “”; }
                $PageList = “共”.$totalPage.”页: “;
                $nPage = $nowPage-1;
                $lPage = $nowPage+1;
                if($nowPage==1) $PageList.=”上一页 “;
                else{

                  if($nPage==1) $PageList.=”<a href=’view.php?aid=$aid’>上一页</a> “;
                  else $PageList.=”<a href=’view.php?aid=$aid&pageno=$nPage’>上一页</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’>下一页</a> “;
                else $PageList.= “下一页 “;
                return $PageList;
        }

修改为:

//获得伪静态页面分页列表
   function GetPagebreakDM($totalPage,$nowPage,$aid)
        {

                if($totalPage==1){ return “”; }
                $PageList = “共”.$totalPage.”页: “;
                $nPage = $nowPage-1;
                $lPage = $nowPage+1;
                if($nowPage==1) $PageList.=”上一页 “;
                else{

                  if($nPage==1) $PageList.=”<a href=’view-$aid’>上一页</a> “;
                  else $PageList.=”<a href=’view-$aid-$nPage.html’>上一页</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’>下一页</a> “;
                else $PageList.= “下一页 “;
                return $PageList;
        }  

1.2 找到:

        //————————-
        //获得动态页面小标题
        //————————-
   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’ οnchange=’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;
        }

修改为:

   //获取伪静态页面小标题
   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’ οnchange=’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”;//文章页伪静态

六、完工。把栏目和文章都改为动态,刷新,dedecms全站伪静态成功。

把栏目和文章批量修改为动态的SQL语句:

update dede_arctype set isdefault=-1;

update dede_archives set ismake=-1;

更新:

DEDECMS搜索的伪静态在 .htaccess 文件里加入如下两句即可:

RewriteRule ^(.*)/search/([^/]*)$   $1/plus/search\.php\?keyword=$2 
RewriteRule ^(.*)/search/([^/]*)/(\d)$   $1/plus/search\.php\?keyword=$2&PageNo=$3




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2011/04/22/2025027.html,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108125.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Repeater嵌套绑定Repeater「建议收藏」

    Repeater嵌套绑定Repeater「建议收藏」Repeater嵌套Repeater的结构: cs代码:  Code private void RpTypeBind()   {       //GetQuestionTypeAndCount() 返回一个datatable        this.rptypelist.DataSource = LiftQuestionCtr.GetQuestio…

    2022年7月14日
    17
  • python 字符串替换_python字符串替换的2种方法

    python 字符串替换_python字符串替换的2种方法一、python字符串替换可以用两种方法实现:1.用字符串本身的方法2.用正则来替换字符串下面用个例子来实验:a=’helloword’我把a字符串里的word替换为python1.用字符串本身的replace方法a.replace(‘word’,’python’)输出结果是hellopython2.用正则表达式来完成替换:importrestrinfo=re.compi…

    2022年5月15日
    38
  • js的随机函数_随机生成数字的函数

    js的随机函数_随机生成数字的函数//默认为范围为10,开始值为1functionrandom(range=10,start=1){returnMath.floor(Math.random()*range+start);}

    2022年10月28日
    0
  • 多重共线性:python计算VIF以及使用vif做因子独立性检验的方法「建议收藏」

    多重共线性:python计算VIF以及使用vif做因子独立性检验的方法「建议收藏」转自:https://blog.csdn.net/ab1112221212/article/details/100133066多重共线性在python中的解决方法本文将讨论多重共线性的相关概念及利用python自动化消除多重共线性的方法,以供参考,欢迎拍砖线性模型与非线性模型关于线性模型与非线性模型的定义,似乎并没有确切的定论,但是个人认为建模首先得清楚地认识样本,样本有线性可分与线性不可分两种,所谓是否线性可分,是指是否存在一条直线(或平面)将样本分开。上图中y=0和y=1的样本可以由一

    2022年6月5日
    202
  • wxpython自定义控件_wxPython 教程(十三) 自定义控件

    wxpython自定义控件_wxPython 教程(十三) 自定义控件本节讲述wxPython自定义控件。GUIToolkits会提供多数常用的部件,比如按钮、文本控件、滚动条、滑块等等。wxPython也会提供很多控件,但若需要更定制化的控件还是需要开发者自己编写。自定义控件通过两种方式创建:一种是通过修改或增强现有控件,另一种是我们从零开始直接创建。超链接控件第一个例子是创建一个超链接控件,我们基于wx.lib.stattext.GenStatic…

    2022年5月11日
    27
  • 什么是ARP欺骗_ARP欺骗防范

    什么是ARP欺骗_ARP欺骗防范ARP欺骗的本质是把虚假的IP-MAC映射关系通过ARP报文发给主机,让主机把虚假的IP-MAC映射存入ARP缓存表(可能是IP地址错误,也可能是MAC地址错误),让其无法正确发送数据漏洞的根源ARP协议是无连接操作系统收到ARP请求或响应后无法确认senderMAC和senderIP真假ARP欺骗伪造网关攻击者B伪造ARP报文(senderIP地址是网关的,senderMAC地址不是网关的),发送给网段内的主机A,那么主机A就会把网关的ip地址和伪造的mac地址缓存到arp缓.

    2022年10月29日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号