phpcms v9自定义栏目伪静态造成页面无法404问题
phpcms v9自定义栏目伪静态,网上有很多的教程,也可以参考我的文章:PHPCMS V9自定义栏目伪静态实现方法(列表页/分页/内容页),其基本原理就是通过伪静态规则匹配到对应的栏目目录,然后通过目录搜寻对应的栏目catid,也正是因为这样,就造成了无论匹配到什么样的目录,都会直接去list或者show方法下去寻找对应的栏目和内容,但是这两个方法中,如果传递了空的catid或者id之后只会提示:文章不存在或者您没有访问该信息的权限! 这不是我们想要看到的结果,所以需要加个判断
修改方法:打开phpcmsmodulescontentindex.php
(1)找到66行左右的代码
(1)找到66行左右的代码
在这个后边加上代码:
- $r = $this->db->get_one(array('id'=>$id));
(2)找到220行左右的(此时是在自定义伪静态基础上的修改)
- if(!$r){
- header('location:/404.html');
- }
在这后边加上代码:
- if(isset ($_GET['catid'])){
- $catid = intval($_GET['catid']);
- }else{
- $catid=$this->_getCategoryId($_GET['dir']);
- }
此时就可以实现当栏目或者内容不存在的时候跳转到404页面,当然别忘了在根目录下添加404.html
- if(empty($catid)){
- header('location:/404.html');
- }