大家在使用phpcms v9的时候可能想用伪静态来美化url,但是可能程序自身的可能无法满足,在这里我列出了2种方法,还有更高级的以后有机会再告诉大家

1.不改变程序下的方法

优点就是部署快速,缺点就是默认的伪静态规则不能使用栏目的英文名称或者拼音名称做为地址,如果大家想要更个性的伪静态规则可以使用第二种
为分类添加规则
    URL示例:
        list-3-1.html
    规则:
        list-{$catid}-{$page}.html
为内容页添加规则
    URL示例:
        show-3-1-1.html
    规则:
        list-{$catid}-{$id}-{$page}.html
.htaccess 规则如下

RewriteEngine onRewriteRule ^list-([0-9]+)-([0-9]+)\.html index.php?m=content&c=index&a=lists&catid=$1&page=$2 [L,QSA]RewriteRule ^show-([0-9]+)-([0-9]+)-([0-9]+)\.html index.php?m=content&c=index&a=show&catid=$1&id=$2&page=$3 [L,QSA]

2.需要改变源码的方法

优点就是相对于第一种要更个性一点,缺点就是需要自己动手改源码
为分类添加规则
    URL示例:
        list-栏目英文名称-3-1.html
        或者 list-栏目拼音-3-1.html
    规则:
        list-{$catdir}-{$catid}-{$page}.html
        或者 list-{$letter}-{$catid}-{$page}.html
为内容页添加规则
    URL示例:
        show-栏目英文名称-3-1-1.html 如果没有分页可以不需要page参数
    规则:
        list-{$catdir}-{$catid}-{$id}-{$page}.html
.htaccess 规则如下

RewriteEngine onRewriteRule ^list-(.*)-([0-9]+)-([0-9]+)\.html index.php?m=content&c=index&a=lists&catid=$2&page=$3 [L,QSA]RewriteRule ^show-(.*)-([0-9]+)-([0-9]+)-([0-9]+)\.html index.php?m=content&c=index&a=show&catid=$2&id=$3&page=$4 [L,QSA]#如果没有page可以去掉最后一个 $*

需要修改的php文件
phpcms/modules/content/classes/url.class.php
我们先为栏目的规则修改

//找到url类的category_url方法(public function category_url) 大致在 108行//修改以下代码//替换前if (!$setting['ishtml']) { //如果不生成静态$url = str_replace(array('{$catid}', '{$page}'), array($catid, $page), $urlrule);if (strpos($url, '\\')!==false) {$url = APP_PATH.str_replace('\\', '/', $url);
	}
}  else { //生成静态//这里面的代码我们不动}//替换后if (!$setting['ishtml']) { //如果不生成静态$catdir = $category["catdir"];$letter = $category["letter"];$url = str_replace(array('{$catid}', '{$page}', '{$catdir}', '{$letter}'), array($catid, $page, $catdir, $letter), $urlrule);if (strpos($url, '\\')!==false) {$url = APP_PATH.str_replace('\\', '/', $url);
	}
}  else { //生成静态//这里面的代码我们不动}//栏目的url规则修改完成,大家可以重新生成地址看看是不是已经发生改变了

接下来我们为内容页改url规则,还是这个类文件

//找到url类的show方法(public function show) 大致在 24行//修改以下代码//替换前 大致63行开始$categorydir = $this->get_categorydir($catid);$catdir = $category['catdir'];$year = date('Y',$time);$month = date('m',$time);$day = date('d',$time);$urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$page),$urlrule);$create_to_html_root = $category['create_to_html_root'];//替换后$categorydir = $this->get_categorydir($catid);$catdir = $category['catdir'];$letter = $category['letter'];$year = date('Y',$time);$month = date('m',$time);$day = date('d',$time);$urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}','{$letter}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$page,$letter),$urlrule);//内容页的url规则到此我们也修改完成,大家可以重新生成地址看看是不是已经发生改变了

转载自:KOKWEB.CN 互联网技术