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

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

binadmin2020-05-26后端技术195

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规则管理。修改两个我们自己用


图片1.png 


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


 图片2.png

 

注意,这里的规则要和.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规则选择自定义的规则

 

 图片3.png

修改完成后刷新缓存和更新url,这个时候打开网站会出现“生成栏目伪静态显示/%7B$catdir%7D/的错误。”。我参考的是这位大神的文章https://blog.csdn.net/ougexingfuba/article/details/80371186,但是在实际过程中,发现有些地方不用改,改了反而有问题,咱也不是学php的,我也不知道怎么修复。所以我改的地方是两个地方。

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

搜索  

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

一共两处,修改为  

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()

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

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


404页面定制

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

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

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

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

标签: phpcmsapache
分享给朋友:

相关文章

PHPCMS完成手机端搭建全教程(新手看完即会)

PHPCMS完成手机端搭建全教程(新手看完即会)

注:这篇文章是在我做完一个自适应和一个响应式网站后写的。所以我建议,如果可以的话,最好用@media css做响应式网站,这样就不用考虑手机端的各种问题。因为我当初做的就是自适应,但是没有想到后面的坑...

 PHP入门基础之PHP操作MySQL数据库

PHP入门基础之PHP操作MySQL数据库

1、PHP操作MySQL数据库的三种方式1.PHP mysql扩展PHP2.0版本开始引入,仅提供面向过程的接口通过调用函数实现例子:<?php     ...

PHPCMS实现表单提交数据功能

PHPCMS实现表单提交数据功能

PHPCMS实现表单提交数据功能一般的童鞋可能都会遇到明明在后台设置了表单,为啥在前台页面只提交了一次就不能提交了。造成这个原因是因为在phpcms后台表单设置里,默认设置了否的“允许同一IP多次提交...

PHP入门基础之MySQL基础

PHP入门基础之MySQL基础

1、什么是数据库相关术语:数据库系统(Database System):DBS{    数据库(Database)    数据管理系统(Database Man...

使用火车头采集文章并发布在PHPCMS里(新手看完即会)

使用火车头采集文章并发布在PHPCMS里(新手看完即会)

网上其实有免登录的方法 https://www.gwygd.com/rRz6bMWRO.html但是我用过,发现不能用,所以只好用了登录的方法,所幸成功了。首先下载火车头,里面有phpcms采集文章的...

发表评论

访客

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

分享:

支付宝

微信