php专区

 首页 > php专区 > PHP应用 > CMS建站 > 织梦Dedecms设置伪静态具体方法 - DeDecms

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

分享到:
【字体:
导读:
          dedecms默认是不支持伪静态,如果要设置伪静态我们需要懂一点程序基础知识了,下面我来给大家介绍在apache下实现Dedecms设置伪静态方法,有需...

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

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 "pageinfo">共1页/".$this->TotalResult."条"
  22.         } 
  23.         if($this->TotalResult == 0) 
  24.         { 
  25.             return "pageinfo">共0页/".$this->TotalResult."条"
  26.         } 
  27.         $maininfo = "pageinfo">共{$totalpage}页/".$this->TotalResult."条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.="
  40. .$purl."-$prepagenum'.html>上一页
  41. rn"
  42.             $indexpage="
  43. .$purl."-1.html'>首页
  44. rn"
  45.         } 
  46.         else 
  47.         { 
  48.             $indexpage="
  49. 首页
  50. rn"
  51.         } 
  52.         if($this->PageNo!=$totalpage && $totalpage>1) 
  53.         { 
  54.             $nextpage.="
  55. .$purl."-$nextpagenum.html'>下一页
  56. rn"
  57.             $endpage="
  58. .$purl."-$totalpage.html'>末页
  59. rn"
  60.         } 
  61.         else 
  62.         { 
  63.             $endpage="
  64. 末页
  65. rn"
  66.         } 
  67.  
  68.         //获得数字链接 
  69.         $listdd=""
  70.         $total_list = $list_len * 2 + 1; 
  71.         if($this->PageNo >= $total_list
  72.         { 
  73.             $j = $this->PageNo - $list_len
  74.             $total_list = $this->PageNo + $list_len
  75.             if($total_list > $totalpage
  76.             { 
  77.                 $total_list = $totalpage
  78.             } 
  79.         } 
  80.         else 
  81.         { 
  82.             $j=1; 
  83.             if($total_list > $totalpage
  84.             { 
  85.                 $total_list = $totalpage
  86.             } 
  87.         } 
  88.         for($j$j<=$total_list$j++) 
  89.         { 
  90.             if($j == $this->PageNo) 
  91.             { 
  92.                 $listdd.= "thisclass">$j
  93. rn"
  94.             } 
  95.             else 
  96.             { 
  97.                 $listdd.="
  98. .$purl."-$j.html'>".$j."
  99. rn"
  100.             } 
  101.         } 
  102.         $plist  =  ''
  103.         if(preg_match('/info/i'$listitem)) 
  104.         { 
  105.             $plist .= $maininfo.' '
  106.         } 
  107.         if(preg_match('/index/i'$listitem)) 
  108.         { 
  109.             $plist .= $indexpage.' '
  110.         } 
  111.         if(preg_match('/pre/i'$listitem)) 
  112.         { 
  113.             $plist .= $prepage.' '
  114.         } 
  115.         if(preg_match('/pageno/i'$listitem)) 
  116.         { 
  117.             $plist .= $listdd.' '
  118.         } 
  119.         if(preg_match('/next/i'$listitem)) 
  120.         { 
  121.             $plist .= $nextpage.' '
  122.         } 
  123.         if(preg_match('/end/i'$listitem)) 
  124.         { 
  125.             $plist .= $endpage.' '
  126.         } 
  127.         return $plist
  128.     } 
分享到:
Dedecms栏目绑定二级域名RSS文件地址URL...
Dedecms栏目绑定二级域名RSS文件地址URL错误 昨天我开了一个分站利用一个目录做二级域名,结果发现rss文件的地址url有问题,下面我来给大家详细介绍Dedecms栏目绑定二级域名RSS文件地址URL错误解决办法. 解决方法: 修改文件:include/arc.rssview.class.php 找到如下代码: $this->TypeFields[...
Dedecms后台文章编辑器空白解决办法 - De...
Dedecms后台文章编辑器空白解决办法 很多使用dedecms5.7的朋友可能会碰到升级系统之后,我们的文章编辑器居然调用不出来了,显示为空白了,下面来给各位朋友介绍解决办法. 进入网站后台,然后在 系统-核心设置 -Html编辑器选项(仅支持 dede 和 fck)填写成:ckeditor (一) 很可能你修改后台的...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……