phpcms v9的动态链接是必需带catid的,这就决定了伪静态参数中也要带catid的参数(如果没有就无法rewrite重定向到对应的动态链接),按照这种url布属,如果哪天我们把内容改变了栏目,那原来的url就会改变,这是相当危险的事,因为没有谁能保证到时不会改变栏目,对吧?
那有没有办法让phpcms v9伪静态的url不带catid呢?答案是有的。
phpcms 在同一个模型下的各个不同栏目里的内容对应catid是可以固定用模型的catid替代的。比如,你在国内(对应catid=6)的文章模型里有新闻(对应catid=9)和笑话(对应catid=10)两个栏目,发布到这几个栏目下的文章的链接对应的catid是不同的。
直接发到国内模型:
index.php?m=content&c=index&a=show&catid=6&id={$id}&page={$page}
发布到栏目新闻的文章:
index.php?m=content&c=index&a=show&catid=9&id={$id}&page={$page}
发布到栏目笑话的文章:
index.php?m=content&c=index&a=show&catid=10&id={$id}&page={$page}
虽然是不同,但是我们都可以用模型的catid来代替,
直接发到国内模型文章:
index.php?m=content&c=index&a=show&catid=6&id={$id}&page={$page}
发布到栏目新闻的文章:
index.php?m=content&c=index&a=show&catid=6&id={$id}&page={$page}
发布到栏目笑话的文章:
index.php?m=content&c=index&a=show&catid=6&id={$id}&page={$page}
既然可以这样,那我们就可以用不带catid的伪静态了
1、先到后台添加不带catid的伪静态,如我添加的例子如下:
URL规则名称 : show 模块名称 : 内容模块 是否生成静态? : 否 URL示例 : content-1-1.html URL规则 : content-{$sid}.html|show-{$sid}-{$page}.html
2、.htaccess把内容重写的规则改为:
RewriteRule ^content-([0-9]+)-?([0-9]*).html$ index.php?m=content&c=index&a=show&catid=6&id=$1&page=$2
注意呀,上面catid=6是你的模型的catid,不是一成不变的。所以图片模型的伪静态还要改,假设图片模型对应的catid=7,可以这样改:
URL规则名称 : show 模块名称 : 内容模块 是否生成静态? : 否 URL示例 : pic-1-1.html URL规则 : pic-{$sid}.html|show-{$sid}-{$page}.html
.htaccess重写规则再添加一条:
RewriteRule ^pic-([0-9]+)-?([0-9]*).html$ index.php?m=content&c=index&a=show&catid=6&id=$1&page=$2
其他模型相应就按照这样的思路加就是了,这个方法可以有效去掉phpcms v9伪静态url带catid的不足,以后可以随便改变栏目url地址也会保持不变,但是不能改变模型。