当前位置:首页 > CMS教程 > DeDecms > 列表

织梦Dedecms设置伪静态具体方法

发布:smiling 来源: PHP粉丝网  添加日期:2014-03-12 09:33:01 浏览: 评论:0 

dedecms默认是不支持伪静态,如果要设置伪静态我们需要懂一点程序基础知识了,下面我来给大家介绍在apache下实现Dedecms设置伪静态方法,有需要的朋友可参考.

首先在dede后台开启伪静态(开启的方法在系统参数-核心设置)

第一步,首先栏目和文章最好设置成动态浏览,这样才不会生成静态html文件.

第二步,设置重写规则. 在系统目录下加一个 .htaccess文件,内容为:

  1. RewriteEngine On 
  2. RewriteRule ^plus/list-([0-9]+).html$ /plus/list.php?tid=$1 
  3. RewriteRule ^plus/list-([0-9]+)-([0-9]+)-([0-9]+).html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 
  4. RewriteRule ^plus/view-([0-9]+)-1.html$ /plus/view.php?arcID=$1 
  5. RewriteRule ^plus/view-([0-9]+)-([0-9]+).html$ /plus/view.php?aid=$1&pageno=$2 

iis文件写法,代码如下:

  1. #首页伪静态规则,如果不使用动态首页,请勿必删除这一行,否则打开首页会出现死循环 
  2. RewriteRule ^(.*)/index.html $1/index.php [I] 
  3. #列表页伪静态规则 
  4. RewriteRule ^(.*)/category/list-([0-9]+).html $1/plus/list.php?tid=$2 [I] 
  5. RewriteRule ^(.*)/category/list-([0-9]+)-([0-9]+)-([0-9]+).html $1/plus/list.php?tid=$2&TotalResult=$3&PageNo=$4 [I] 
  6. #文章页伪静态规则 
  7. RewriteRule ^(.*)/archives/view-([0-9]+)-([0-9]+).html $1/plus/view.php?arcID=$2&pageno=$3 [I] 
  8. #搜索伪静态规则 
  9. RewriteRule ^(.*)/search.html(?:(?.*))* $1/search.php?$2 [I] 
  10. #TAG标签伪静态规则 
  11. RewriteRule ^(.*)/tags.html $1/tags.php [I] 
  12. RewriteRule ^(.*)/tags/(.*)(?:(?.*))* $1/tags.php?/$2 [I] 
  13. RewriteRule ^(.*)/tags/(.*)/(?:(?.*))* $1/tags.php?/$2/ [I] 
  14. RewriteRule ^(.*)/tags/(.*)/([0-9])(?:(?.*))* $1/tags.php?/$2/$3 [I] 
  15. RewriteRule ^(.*)/tags/(.*)/([0-9])/(?:(?.*))* $1/tags.php?/$2/$3/ [I] 

如果你的系统支持url重写,到这里就可以用伪静态访问了.

第三步.更改重写的URL.

如果用默认的设置,访问的URL是:

http://www.XXXX.com/plus/view-131-1.html

这样的形色,我们是可以更改这种样式的.

找到文件/include/helpers/channelunit.helper.php打开.

可以看到有这样的语句

return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html';

这就是文章的url形色.

$reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;

这是列表的重写url.可以使url更短一点,完成可以写成:

return "/view-".$aid.'-1.html'; 和 $reurl = "/list-".$typeid.".html";

这时重写规则也要更新,代码如下:

  1. RewriteEngine On 
  2. RewriteRule ^list-([0-9]+).html$ /plus/list.php?tid=$1 
  3. RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+).html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 
  4. RewriteRule ^view-([0-9]+)-1.html$ /plus/view.php?arcID=$1 
  5. RewriteRule ^view-([0-9]+)-([0-9]+).html$ /plus/view.php?aid=$1&pageno=$2 

更进一步,还可以把view换成自己的任何词语,这也要把include/arc.archives.class.php文件中的view也一样替换。

发布选项:生成HTML 仅动态浏览 发文章的时候选一下也不多事,为了以后升级 尽量减少修改文件。

以下这没有试,大家按需要测试吧~~

修改数据库

将所有文档设置为“仅动态”,可以进入数据库管理中,执行下面命令:

update dede_archives set ismake=-1

并将ismake的默认值设置为 -1即动态。

将所有栏目设置为“使用动态页”,可以进入数据库管理中,执行下面命令:

update dede_arctype set isdefault=-1

DedeCmsTAG标签伪静态

DedeCms默认的TAG标签UR,形如/tags.php?/dedecms5.7/,非常之难看。打开/include/taglib/tag.lib.php,找到lib_tag()函数下的:

$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";

替换为

$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword'])."/";

修改分页代码

我们需要修改include/arc.taglist.class.php,将分页函数替换为:

  1. /**     *  获取动态的分页列表 
  2.      * 
  3.      * @access    public 
  4.      * @param     int  $list_len  列表宽度 
  5.      * @param     string  $listitem  列表样式 
  6.      * @return    string 
  7.      */ 
  8.     function GetPageListDM($list_len,$listitem="info,index,end,pre,next,pageno"
  9.     { 
  10.         $prepage=""
  11.         $nextpage=""
  12.         $prepagenum = $this->PageNo - 1; 
  13.         $nextpagenum = $this->PageNo + 1; 
  14.         if($list_len == "" || preg_match("/[^0-9]/"$list_len)) 
  15.         { 
  16.             $list_len = 3; 
  17.         } 
  18.         $totalpage = $this->TotalPage; 
  19.         if($totalpage <= 1 && $this->TotalResult > 0) 
  20.         { 
  21.             return "<span class="pageinfo">共1页/".$this->TotalResult."条</span>"
  22.         } 
  23.         if($this->TotalResult == 0) 
  24.         { 
  25.             return "<span class="pageinfo">共0页/".$this->TotalResult."条</span>"
  26.         } 
  27.         $maininfo = "<span class="pageinfo">共{$totalpage}页/".$this->TotalResult."条</span>rn"
  28.         $purl = $this->GetCurUrl(); 
  29.         $basename = basename($purl); 
  30.         $tmpname = explode('.'$basename); 
  31.          
  32.         $purl = str_replace($basename''$purl).urlencode($this->Tag); 
  33.         //var_dump($purl);exit; 
  34.         //$purl .= "?/".urlencode($this->Tag); 
  35.  
  36.         //获得上一页和下一页的链接 
  37.         if($this->PageNo != 1) 
  38.         { 
  39.             $prepage.="<li><a href='".$purl."-$prepagenum'.html>上一页</a></li>rn"
  40.             $indexpage="<li><a href='".$purl."-1.html'>首页</a></li>rn"
  41.         } 
  42.         else 
  43.         { 
  44.             $indexpage="<li><a>首页</a></li>rn"
  45.         } 
  46.         if($this->PageNo!=$totalpage && $totalpage>1) 
  47.         { 
  48.             $nextpage.="<li><a href='".$purl."-$nextpagenum.html'>下一页</a></li>rn"
  49.             $endpage="<li><a href='".$purl."-$totalpage.html'>末页</a></li>rn"
  50.         } 
  51.         else 
  52.         { 
  53.             $endpage="<li><a>末页</a></li>rn"
  54.         } 
  55.  
  56.         //获得数字链接 
  57.         $listdd=""
  58.         $total_list = $list_len * 2 + 1; 
  59.         if($this->PageNo >= $total_list
  60.         { 
  61.             $j = $this->PageNo - $list_len
  62.             $total_list = $this->PageNo + $list_len
  63.             if($total_list > $totalpage
  64.             { 
  65.                 $total_list = $totalpage
  66.             } 
  67.         } 
  68.         else 
  69.         { 
  70.             $j=1; 
  71.             if($total_list > $totalpage
  72.             { 
  73.                 $total_list = $totalpage
  74.             } 
  75.         } 
  76.         for($j$j<=$total_list$j++) 
  77.         { 
  78.             if($j == $this->PageNo) 
  79.             { 
  80.                 $listdd.= "<li class="thisclass"><a>$j</a></li>rn"
  81.             } 
  82.             else 
  83.             { 
  84.                 $listdd.="<li><a href='".$purl."-$j.html'>".$j."</a></li>rn"
  85.             } 
  86.         } 
  87.         $plist  =  ''
  88.         if(preg_match('/info/i'$listitem)) 
  89.         { 
  90.             $plist .= $maininfo.' '
  91.         } 
  92.         if(preg_match('/index/i'$listitem)) 
  93.         { 
  94.             $plist .= $indexpage.' '
  95.         } 
  96.         if(preg_match('/pre/i'$listitem)) 
  97.         { 
  98.             $plist .= $prepage.' '
  99.         } 
  100.         if(preg_match('/pageno/i'$listitem)) 
  101.         { 
  102.             $plist .= $listdd.' '
  103.         } 
  104.         if(preg_match('/next/i'$listitem)) 
  105.         { 
  106.             $plist .= $nextpage.' '
  107.         } 
  108.         if(preg_match('/end/i'$listitem)) 
  109.         { 
  110.             $plist .= $endpage.' '
  111.         } 
  112.         return $plist
  113.     } 

Tags: Dedecms 设置 伪静态

分享到: