当前位置:首页 > 网站技术 > 后端技术 > 正文内容

PHPCMS里Apache服务器的伪静态和定制404页面

小彬2020-05-26后端技术478

1、首先网站根目录要有.htaccess文件,我做的网站服务器是Apache,所以这里就先不讲nginx服务器环境下了,听说nginx环境更简单。 

2、然后直接在.htaccess文件配置网站需要做的伪静态规则

我写一个简单的规则:

<IfModule mod_rewrite.c>
 RewriteEngine On
RewriteCond %{HTTP_HOST}  ^phpcms.com$ [NC]
RewriteRule ^(.*)$  http://www.phpcms.com/$1 [R=301,L]
RewriteRule ^([0-9A-Za-z_]*)/$ index.php?m=content&c=index&a=lists&catdir=$1
RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)/?$ index.php?m=content&c=index&a=lists&catdir=$1&page=$2  
RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)\.html$ index.php?m=content&c=index&a=show&catdir=$1&id=$2  

</IfModule>


 

前两句是做301跳转,后面三句就是伪静态规则。

前面加粗是伪静态规则,后面是网站动态url,意思是网站可以通过前面url打开后面url对应的页面。

Phpcms后台扩展里面有url规则管理。修改两个我们自己用


PHPCMS里Apache服务器的伪静态和定制404页面 


我修改的是id110 的,注意是否生成静态要选否,然后那个名称不能改,category代表是一级和二级栏目,show代表是内容详情页,这是固定的。至于变量,里面有。


 PHPCMS里Apache服务器的伪静态和定制404页面

 

注意,这里的规则要和.htaccess文件里面一样,我的规则是

一级栏目/二级栏目:http://www.xxx.com/xyz/

如果出现页数的时候就是:http://www.xxx.com/xyz/page.html

其实出现页数的url规则也可以是:http://www.xxx.com/xyz/page/

这个看个人要求,和url规则一一对应即可

内容详情页:http://www.xxx.com/xyz/id.html

修改完成后在添加栏目上,选择全否,然后url规则选择自定义的规则

 

 PHPCMS里Apache服务器的伪静态和定制404页面

修改完成后刷新缓存和更新url,这个时候打开网站会出现“生成栏目伪静态显示/%7B$catdir%7D/的错误。”。

我参考的是这位大神的文章https://blog.csdn.net/ougexingfuba/article/details/80371186

但是在实际过程中,发现有些地方不用改,改了反而有问题所以我改的地方是两个地方。

3,文件,phpcms\phpcms\modules\content\index.php中  

搜索  

$catid = intval($_GET['catid']);  

一共两处,一处是在列表页lists()函数里,一处是在内容页show()函数里,

意思就是修改列表页和内容页的URL规则

修改为  

if(isset ($_GET['catid'])){     
          $catid = intval($_GET['catid']);     
      }else{     
          $catdir=$_GET['catdir'];     
          $s=$this->_getCategoryId($catdir);     
          $catid=$s[0][catid];                        
      }

然后,在最下面  

} 这个 大括号的前面增加一个函数,如下  

  

  protected  function _getCategoryId($catdir){     
      $this->category_db = pc_base::load_model('category_model');     
      $result = $this->category_db->select(array('catdir'=>$catdir));     
      // print_r($result);     
       return $result;     
    }

 

4、/phpcms/modules/admin/classes/cache_api.class.php找到下边代码

public function category() //这个方法里边的下边这个方法

if(!preg_match('/^(http|https):\/\//', $r['url'])) {
              $r['url'] = siteurl($r['siteid']).$r['url'];
          } elseif ($r['ishtml']) {
              $r['isdomain'] = '1';
          }
          $categorys[$r['catid']] = $r;

修改成下边

if(!preg_match('/^(http|https):\/\//', $r['url'])) {
              $r['url'] = preg_replace('/(\{\$catdir\})/i',$r['catdir'],siteurl($r['siteid']).$r['url']);
          } elseif ($r['ishtml']) {
              $r['isdomain'] = '1';
          }
          $r['url'] = preg_replace('/(\{\$catdir\})/i',$r['catdir'],$r['url']);
          $categorys[$r['catid']] = $r;



然后找到/phpcms/modules/admin/category.php里边的public function cache()

里边有跟上边相同的代码修改了就可以了!

自此,使用phpcms在apache服务器做伪静态规则完美解决


404页面定制

很简单,直接在htaccess规则里面加上一个指向根目录404页面的规则

ErrorDocument 404 http://bin012.com/404.html

注意:要在</IfModule>前面加

然后把404页面放到网站根目录下即可

标签: phpcmsapache
分享给朋友:

相关文章

phpcms v9模板制作及二次开发常用代码

phpcms v9模板制作及二次开发常用代码

0:调用最新文章,带所在版块{pc:get sql="SELECT a.title, a.catid, b.catid, b.catname...

 PHP入门基础之会话控制基础和实战

PHP入门基础之会话控制基础和实战

1、会话控制基础会话是具有逻辑关联的多个简单交互的集合简单交互模型逻辑关联http是无状态协议每个请求都是单独处理的,协议无法识别当前用户。有状态vs无状态  (跟朋友吃饭【不用二次介绍】...

PHP入门之图像信息处理(验证码、水印、缩略图)

PHP入门之图像信息处理(验证码、水印、缩略图)

PHP处理图像信息要使用GD库(imageMagick是另外一种图像处理工具)1、gd_info:检测服务器支持的图像格式var_dump(gd_info()); // array(13)&n...

PHPCMS列表页ajax动态获取更多(新手看完即会)

PHPCMS列表页ajax动态获取更多(新手看完即会)

本文取自Dong-Ge的phpcms 列表页ajax点击加载更多文章但是在实践过程中,由于我对phpcms的不熟悉导致还是浪费了一点时间经过咨询大佬,终于完美解决。1、在phpcms/model创建一...

PHP入门之正则表达式、PHP错误报告

PHP入门之正则表达式、PHP错误报告

原子:指正则表达式中不可再分的基本单元可见原子:普通字符:字母 数字 汉字 符号特殊字符 / \ . * ? " ' | [] {}  ()不可见原子:\t 制表符tab\...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信