PHPCMS V9的伪静态url中如何去掉catid参数

 我来答
贺云彩
2016-02-15 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:54
采纳率:100%
帮助的人:82.5万
展开全部
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地址也会保持不变,但是不能改变模型。
Storm代理
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式