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

http://www.bin012.com/adj/5.html

PHPCMS里Apache服务器的伪静态和定制404页面 binadmin2020-05-26后端技术136 1、首先网站根目录要有.htaccess文件,我做的网站服务器是Apache,所以这里就先不讲nginx服务器环境下了,听说nginx环境更简单。  2、然后直接在.htaccess文件配置网站需要做的伪静态规则 我写一个简单的规则: PHP 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   前两句是做301跳转,后面三句就是伪静态规则。 前面加粗是伪静态规则,后面是网站动态url,意思是网站可以通过前面url打开后面url对应的页面。 Phpcms后台扩展里面有url规则管理。修改两个我们自己用   我修改的是id为1和10 的,注意是否生成静态要选否,然后那个名称不能改,category代表是一级和二级栏目,show代表是内容详情页,这是固定的。至于变量,里面有。     注意,这里的规则要和.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规则选择自定义的规则     修改完成后刷新缓存和更新url,这个时候打开网站会出现“生成栏目伪静态显示/%7B$catdir%7D/的错误。”。我参考的是这位大神的文章Https://blog.csdn.net/ougexingfuba/article/details/80371186,但是在实际过程中,发现有些地方不用改,改了反而有问题,咱也不是学PHP的,我也不知道怎么修复。所以我改的地方是两个地方。 3,文件,Phpcms\Phpcms\modules\content\index.PHP中   搜索   $catid = intval($_GET[‘catid’]);   一共两处,修改为   PHP if(isset ($_GET[‘catid’])){ $catid = intval($_GET[‘catid’]); }else{ $catdir=$_GET[‘catdir’]; $s=$this->_getCategoryId($catdir); $catid=$s[0][catid]; } 然后,在最下面   } 这个 大括号的前面增加一个函数,如下      PHP 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() //这个方法里边的下边这个方法 PHP if(!preg_match(‘/^(Http|Https):\/\//’, $r[‘url’])) { $r[‘url’] = siteurl($r[‘siteid’]).$r[‘url’]; } elseif ($r[‘isHtml’]) { $r[‘isdomain’] = ‘1’; } $categorys[$r[‘catid’]] = $r; 修改成下边 PHP 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页面的规则 PHP ErrorDocument 404 http://www.bin012.com/404.Html 注意:要在前面加 然后把404页面放到网站根目录下即可声明:本文由bin012发布,如需转载请注明出处。原地址:http://www.bin012.com/adj/5.html

display(‘./Public/error/404.html’); } } ?>

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注