[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' 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;
        }

修改为:

   //获取伪静态页面小标题
   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";//文章页伪静态

六、完工。把栏目和文章都改为动态,刷新,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,如需转载请自行联系原作者

相关文章
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
|
11月前
|
应用服务中间件 PHP nginx
|
18天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
1月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
2月前
|
PHP Windows
thinkPhP6.0安装教程图解--PHP框架安装
本文是一篇关于ThinkPHP 6.0安装教程的图解,包括环境检查、安装Composer、修改Composer镜像地址、安装ThinkPHP框架以及启动运行ThinkPHP的步骤。文章详细描述了每个步骤的操作方法,并提供了相应的命令和截图,帮助用户理解并顺利完成ThinkPHP 6.0的安装和运行。
thinkPhP6.0安装教程图解--PHP框架安装
|
3月前
|
Linux PHP
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
49 2
|
3月前
|
SQL 关系型数据库 MySQL
PHP与MySQL交互之基础教程
【8月更文挑战第31天】 在数字世界中,数据是推动一切的核心力量。本文将引导你探索PHP与MySQL的协同工作,通过实际代码示例,展示如何建立连接、执行查询以及处理结果集。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你提供宝贵的实践知识。
|
3月前
|
PHP 开发者 UED
PHP中的异常处理:从基础到高级探索Python中的列表推导式:简洁而强大的工具
【8月更文挑战第30天】在PHP编程的世界中,异常处理是确保代码健壮性和可靠性的关键机制。本文将引导您了解PHP异常处理的基本概念,并通过实际示例展示如何有效地捕获和处理异常。我们将一起探索try-catch结构、自定义异常类以及高级异常处理技术,让您的PHP代码更加稳固和易于维护。
|
3月前
|
网络协议 API PHP
PhalApi:在宝塔一键安装部署PHP开源接口框架的教程
要在宝塔面板上一键安装部署PhalApi开源接口框架,首先进入宝塔软件商店,切换到“一键部署”选项,搜索“phalapi”并点击“一键部署”。安装时需填写接口域名、数据库名及密码,提交后等待安装完成。安装成功后可在宝塔面板中查看新站点和源代码目录,并通过DNS解析设置访问接口域名,如`http://myapi.phalapi.net/`。默认开启的调试模式便于测试,可通过修改`config/sys.php`中的`debug`值为`false`关闭。最后,在源代码中开发自己的PHP接口,PhalApi会自动生成在线接口文档,方便后续调用与维护。更多详细教程可参考官方文档。
|
4月前
|
小程序 PHP
全新UI自助图文打印系统小程序源码 PHP后端 附教程
全新UI自助图文打印系统小程序源码 PHP后端 附教程
274 2