phpcms v9二次开发:伪静态url去掉catid参数

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的伪静态,如我添加的例子如下

  • RL规则名称 : 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,可以这样改:

  • RL规则名称 : 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地址也会保持不变,但是不能改变模型。

来源:羊窝

柳华芳
柳华芳

奔向光明之地

文章: 1201
订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x