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

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

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

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
分享给朋友:

相关文章

 PHP入门基础之面向对象语法

PHP入门基础之面向对象语法

对象是程序中的一种数据结构,用来表现某个事物。相反,任何事物在程序中可以用某个对象来表示。对象包括变量和函数。对象中的变量叫做属性,对象中的函数叫做方法对象的属性和方法可以描述表达万事万物1、面向对象...

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

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

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

PHP入门基础之文件操作函数封装

PHP入门基础之文件操作函数封装

1、php创建函数的注释使用vscode 编辑器,安装vs docblocker , 输入/** 回车如下    /**  * [create_fi...

Openssl常用功能和SSO单点登录逻辑

Openssl常用功能和SSO单点登录逻辑

Openssl 常用功能介绍一、openssl rand 产生随机数openssl rand 用于产生指定长度个 bytes 的随机字符。实例如下:E:\OpenSSL\foo>openssl...

实现PHPCMS里提交表单发送邮件功能

实现PHPCMS里提交表单发送邮件功能

使用phpcms自带的邮件发送功能实现前台页面表单提交时发送邮件1、首先在phpcms后台找到邮箱配置2、修改相关配置信息。我这里建议使用163的邮件服务器,因为我刚开始用的就是QQ,但是不好用。记得...

发表评论

访客

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

分享:

支付宝

微信