phpcms v9 栏目伪静态完全自定义为栏目英文目录名

  1. 1,后台增加url规则,增加后.导航上,或分页号上,会自动替换为静态的样式.类似www.abc.com/news/2/ 2表示页码  
  2. phpcms v9 的后台扩展,url规则,添加两个规则,  
  3.   
  4. 一个是名称为category的规则,规则的前面的斜线可以去掉,不过可能影响分页问题   
  5. /{$catdir}/|/{$catdir}/{$page}/  
  6. url示例为 www.abc.com/news/  
  7. 一个是名称为show规则  
  8. {$catdir}/{$id}.html|{$catdir}/{$id}_{$page}.html  
  9. 示例为www.abc.com/news/99.html  
  10.   
  11.   
  12.   
  13. 然后,找到想伪静态的栏目,修改.生成html设置,生成Html全设置为否,url规则选择自己刚才设置的.保存,  
  14.   
  15. 最后更新栏目缓存及批量更新url,不更新无效  
  16.   
  17. 2,如果为apache的服务器空间,伪静态规则如下,注意,要保存在.htaccess 文件中,并上传到网站根目录中,其它规则自己转换  
  18.   
  19.   
  20. RewriteEngine on  
  21. #静态文件以及API目录不需要伪静态  
  22. RewriteRule ^(statics|api|uploadfile)(.*) - [L]  
  23. #栏目页  
  24. RewriteRule ^([0-9A-Za-z_]*)$ index.php?m=content&c=index&a=lists&catdir=$1  
  25. RewriteRule ^([0-9A-Za-z_]*)/$ index.php?m=content&c=index&a=lists&catdir=$1  
  26. RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)$ index.php?m=content&c=index&a=lists&catdir=$1&page=$2  
  27. RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)/$ index.php?m=content&c=index&a=lists&catdir=$1&page=$2  
  28. #上面栏目分页,是完全的字母加数字的形式,如www.abc.com/news/2 ,后面不带其它字符,或加一个/字符,如果服务器伪静态匹配到了"域名/字母/数字/"的组合,则会自动跳转到index.php?m=content&c=index&a=lists&catdir=$1&page=$2这个页面中.所以.前面的规则不可重复,否则会错乱.  
  29.   
  30. #内容页  
  31. RewriteRule ^([0-9A-Za-z_]*)/([0-9]+).html$ index.php?m=content&c=index&a=show&catdir=$1&id=$2  
  32.   
  33.   
  34. 3,文件,phpcmsphpcmsmodulescontentindex.php中  
  35. 搜索  
  36. $catid = intval($_GET['catid']);  
  37. 一共两处,修改为  
  38.   
  39.  if(isset ($_GET['catid'])){     
  40.                     $catid = intval($_GET['catid']);     
  41.                 }else{     
  42.                     $catdir=$_GET['catdir'];     
  43.                     $s=$this->_getCategoryId($catdir);     
  44.                     $catid=$s[0][catid];                        
  45.                 }   
  46.                   
  47.                   
  48. 然后,在最下面  
  49. } 这个 大括号的前面增加一个函数,如下  
  50.   
  51.   
  52.  protected  function _getCategoryId($catdir){     
  53.            $this->category_db = pc_base::load_model('category_model');     
  54.            $result = $this->category_db->select(array('catdir'=>$catdir));     
  55.            // print_r($result);     
  56.             return $result;     
  57.          }   
  58.   
  59.            
  60.            
  61.            
  62. 4, 打开phpcmsmodulescontentclassesurl.class.php,找到  
  63.   if (!$setting['ishtml']) { //如果不生成静态  
  64.   将下面的:  
  65.   
  66.   
  67. $url = str_replace(array('{$catid}', '{$page}'), array($catid, $page), $urlrule);     
  68.             if (strpos($urls, '\')!==false) {    
  69.                     $url = APP_PATH.str_replace('\', '/', $urls);     
  70.             }    
  71.               
  72.               
  73.               
  74.             整体替换为  
  75.               
  76.             $domain_dir = '';     
  77.             if (strpos($category['url'], '://')!==false && strpos($category['url'], '?')===false) {     
  78.                 if (preg_match('/^((http|https)://)?([^/]+)/i', $category['url'], $matches)) {     
  79.                     $match_url = $matches[0];     
  80.                     $url = $match_url.'/';     
  81.                 }     
  82.                 $db = pc_base::load_model('category_model');     
  83.                 $r = $db->get_one(array('url'=>$url), '`catid`');     
  84.     
  85.                 if($r) $domain_dir = $this->get_categorydir($r['catid']).$this->categorys[$r['catid']]['catdir'].'/';     
  86.             }     
  87.             $categorydir = $this->get_categorydir($catid);     
  88.             $catdir = $category['catdir'];     
  89.             $year = date('Y',$time);     
  90.             $month = date('m',$time);     
  91.             $day = date('d',$time);     
  92.             //echo $catdir;     
  93.             $urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$prefix}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$prefix,$page),$urlrule);     
  94.                        // echo $urls."<br>";     
  95.                         if (strpos($urls, '\')!==false) {    
  96.                     $urls = APP_PATH.str_replace('\', '/', $urls);     
  97.             }     
  98.                         $url = $domain_dir.$urls;  
  99.   
  100.   
  101.  
原文地址:https://www.cnblogs.com/keta/p/8426936.html