当前位置:首页 > 技术 > 正文内容

本站原创:PHPCMS的NGINX伪静态和URL规则设置实践记录

Lavfun2年前 (2022-05-15)技术4819

首先说明一下,本人小白,不懂网页代码编程语言或技术,只是自己摸索了一点简单的修改页面的方法,大部分都是在网上找到的资料,再加上自己的理解、修改、测试琢磨出来的,写出来一方面是自己做个记录,另外一方面希望能帮助到有需要的人吧,水平有限还请鉴谅!

1、首先PHPCMS版本是V9.6.3,先设置/caches/configs/system.php里的'html_root' => '/training',//生成静态文件路径;

另外,推荐大家多备份网站数据和数据库,一旦出错无法解决时可以随时恢复如初!!!

管理后台——内容——一键清理数据,这个功能不要乱用,否则后果自负!!!


2、服务器Nginx伪静态:

##如在nginx下使用伪静态,使用以下规则

location / {
  ##PHPCMSX内置伪静态默认规则
  rewrite 'index.html' index.php last;
  rewrite ^/content-([0-9]+)-([0-9]+)-([0-9]+).html /index.php?m=content&c=index&a=show&catid=$1&id=$2&page=$3;
  rewrite ^/show-([0-9]+)-([0-9]+)-([0-9]+).html /index.php?m=content&c=index&a=show&catid=$1&id=$2&page=$3;
  rewrite ^/list-([0-9]+)-([0-9]+).html /index.php?m=content&c=index&a=lists&catid=$1&page=$2;
  rewrite ^/tag-([^\.]*)-([0-9]+)-([0-9]+).html /index.php?m=content&c=tag&catid=$2&tag=$1&page=$3 last;
  rewrite ^/comment-([0-9]+)-([0-9]+)-([0-9]+).html /index.php?m=comment&c=index&a=init&commentid=content_$1-$2-$3 last;
  
  ##QQ登录回调可启用下条规则
  #rewrite ^/qqcode /index.php?m=member&c=index&a=public_qq_loginnew&code=$bref_1 last;
  
  ##目录英文名伪静态可启用以下规则
  
  ##栏目英文目录名.html   后台 扩展 - 自定义URL 规则中设置category规则:{$catdir}.html|{$catdir}-{$page}.html
  #rewrite ^/((\w+)(\-(\d+))?)\.html /index.php?m=content&c=index&a=lists&catdir=$2&page=$4 last;
  
  ##栏目英文目录名/文章id.html  后台 扩展 - 自定义URL 规则中设置show规则:{$catdir}/{$id}.html|{$catdir}/{$id}-{$page}.html 
  #rewrite ^/(\w+)/(\d+)(\-(\d+))?\.html /index.php?m=content&c=index&a=show&catdir=$1&id=$2&page=$4 last;  
}

说明:这些是PHPCMS X带的伪静态规则,如果是自定义栏目英文名,注意看下面部分提示,亲测可用,只是下述我是生成静态页,就没有用上这些伪静态规则。


3、网站管理后台URL规则:

示例:custom-1-1.html,URL规则:{$catdir}-{$catid}-{$page}.html|{$catdir}-{$catid}-{$page}.html
示例:custom/1-2-1.html,URL规则:{$categorydir}{$catdir}/{$catid}-{$id}-{$page}.html|{$categorydir}{$catdir}/{$catid}-{$id}-{$page}.html
示例:show-1-2-1.html,URL规则:show-{$catid}-{$id}-{$page}.html
示例:praise-1-2-1.html,URL规则:praise-{$catid}-{$id}-{$page}.html
示例:list-1-1.html,URL规则:list-{$catid}-{$page}.html

说明:网站大部分页面只用到前2项,在栏目里选择这个规则后,自定义栏目英文目录,用起来非常爽!个别栏目是三级目录时,为了减少目录,才会用到下面三个,下面三个其实一样,只是目录英文名称不同。


4、开启生成静态页面文件:管理后台——内容——管理栏目——每个栏目后面的“修改”依次开启;单页、栏目等我的开启方法如下图:



5、生成静态页并更新缓存,这点非常重要,否则就看不到效果!!!


1684092590123110.jpg

18790311244668.jpg

16540602108125130.jpg

说明:每次想看到是否生效的效果时,都要“更新栏目”、“更新URL”、“更新内容页”、“清空缓存”以及“管理栏目”里上面的“更新栏目缓存”等项全部操作,否则可能就看不到效果,做完这几项后,第一条设置的目录下就可以看到生成的html静态文件了,刷新看看网站页面链接是否已经变成新的静态页链接了!


6、其它方面说明:

  • 有些链接不变化或变化有问题,跟模板里的设置有关系,特别是手机版,必要时要结合模板文件里的内容进行修改,模版文件位置:/phpcms/templates/default/content目录下的html文件就是了;

  • 自定义表单页面PC和手机端都实现静态化,页面模板与其它页面相同,调用表单使用添加表单列表中那个js代码插入模板,再修改相关表单css样式和show_js.php代码即可;

  • 自定义表单提示信息样式css修改:/phpcms/templates/default/content/message.html,提示信息跳转时间设置:/phpcms/libs/functions/global.func.php,搜索“function showmessage($msg, ” 后面的$ms = 1450, 改成5000,就代表5秒;

  • 遗憾:更新到了202204月份最新的PHPCMS-X,切换到php7.1和php7.4都有大量错误,只能老老实实用回php5.6吧!

  • 手机端栏目分页或翻页一直不正常,后来在大神的指导下搞好了,原因是上述URL规则有问题,后来修改后就OK了,上述URL已经更新过了;

  • PC端栏目列表页分页或翻页时出现404:注意看服务器伪静态的路径,我是改了路径就正常了;

  • PC端自动跳转手机端以及手机端自动跳转PC端的方法也找到了,搜索到大神的代码,自己简单改一下就反过来用了:

————————————————
<script type="text/javascript">
function IsPC() {
    var userAgentInfo = navigator.userAgent;
    var Agents = ["Android", "iPhone",
                "SymbianOS", "Windows Phone",
                "iPad", "iPod"];
    var flag = true;
    for (var v = 0; v < Agents.length; v++) {
        if (userAgentInfo.indexOf(Agents[v]) > 0) {
            flag = false;
            break;
        }
    }
    return flag;
}
var currentUrl = window.location.href;
if(!IsPC()){
    document.location.href = "{php echo str_replace('https://你的域名/','https://你的域名/m/',$url)}"; //这是PC页面跳转手机页面;
}
</script>
————————————————
<script type="text/javascript">
function IsMB() {
    var userAgentInfo = navigator.userAgent;
    var Agents = ["Android", "iPhone",
                "SymbianOS", "Windows Phone",
                "iPad", "iPod"];
    var flag = false;
    for (var v = 0; v < Agents.length; v++) {
        if (userAgentInfo.indexOf(Agents[v]) > 0) {
            flag = true;
            break;
        }
    }
    return flag;
}
var currentUrl = window.location.href;
if(!IsMB()){
    document.location.href = "{php echo str_replace('https://你的域名/m/','https://你的域名/',$url)}"; //这是手机页面跳转PC页面;
}
</script>
————————————————
  • 上述代码可使首页以外的页面跳转自如,但首页跳转可能出现不断刷新的情况,解决办法:将“header.html”复制出来一个,然后命名为“index-header.html”,在两端首页模版文件里分别引入“index-header”,并将两端“index-header.html”文件里上述代码的跳转链接等号后面引号里分别改成域名,手机端改成PC端域名,PC端改成手机端域名,如“https://你的域名/”,然后保存,重新生成首页并清空缓存即可。

  • 手机端目录是在主域名后m的目录里,主域名链接也带m,手机端要登录它的管理后台来生成静态文件和清空缓存,不清楚为啥手机端不能跟着PC端自动变成静态链接,它后台的URL规则和栏目设置跟PC端是完全一样的,无奈我只好修改手机模板链接后才实现的静态页面,但这些链接的修改时尽量使用一些变量,比如:/m/training/{$catdir}/{$catid}-{$id}-{$page}.html,/m/training/{$catdir}-{$catid}-{$id}-{$page}.html,/m/training/show/{$catid}-{$id}-{$page}.html等等;还要注意{$v[catid]}、{$r[catid]}和{$i[catid]},错一个字母它就没有数字出现;还有一种变量:{$v[catid]}和{$catid},这两种有啥区别,有时候设置了还不生效,反复修改测试,后来把别的代码复制过来一部分粘贴进去,它竟然生效了......

  • 网站的SSL是在搞这个之前已经搞好了的,具做操作方法参考大神的方法,度娘搜索:让phpcms也支持https;

  • 关于iframe视频播放问题见:https://www.lavfun.com/technical-forum/62.htmlhttps://www.lavfun.com/technical-forum/60.html

  • 管理后台的内容——一键清空数据如果不小心点到了,默认它有备份,可以通过数据库恢复,度娘搜索:phpcms一键清空数据;

  • 个人感觉:phpcms这个系统好多年没有更新了,很多代码已经过时了,使用起来也是非常不方便,以后自己不会再用了!自己还使用过PbootCMS、Z-Blog、DiscuzX等等感觉更好用一些;

  • 其它未尽事宜欢迎大家留言讨论,共同学习。



声明:本文是本站原创内容,转载请注明出处!!!否则勿转!!!



扫描二维码推送至手机访问。

版权声明:本文由 声光视趣 - lavfun.com 发布,如需转载请注明出处。

本文链接:https://www.lavfun.com/technical-forum/61.html

分享给朋友:

相关文章

修改misc.phpmod=mobile使DiscuzX论坛PC端与移动端互相跳转

修改misc.phpmod=mobile使DiscuzX论坛PC端与移动端互相跳转

用discuz!论坛访问手机版本的网址不会自动跳转到电脑版网址,而是会跳转到http://域名/misc.php?mod=mobile,这样体验很不好。现提供修改方法:打开论坛根目录找到文件:/source/class/discuz/dis...

DIV_P_SPAN等html标签的用法和区别

<div> </div> 盒子模型 用来做结构的,一般用它来布局 。<p> </p> 中间不可以放div标签,可以但不限于放文字,这个用起来有段落,p标签,可设置宽高的文字区块。<spa...

打开页面后自动刷新一次以加载内容

我只是搬运工,下列内容转载于网络:打开后延时1秒刷新页面一次:<SCRIPT LANGUAGE="JavaScript">  function refresh(){ &nbs...

Linux系统下DiscuzQ换了服务器后图片加载不正常解决办法

Linux系统dzq要创建软链接,命令如下:ln -s /www/wwwroot/dzq/storage/app/public /www/wwwroot/dzq/public/storage注意:命令中/www...

DiscuzX更换域名的方法及步骤

下面先说更换域名的步骤方法:后台--全局--站点信息--网站 URL:后台--全局--域名设置--应用域名和根域名设置后台--界面--导航--连接里面的地址修改后台--运营--关联连接,没有设置就不用修改后台--云平台--同步站点信息后台-...

修改去除Powered by Discuz!的方法

1、Powered by Discuz!这个信息存在于页面路径为:根目录下template/default/common/header_common.htm找到下列代码:<title><!–{if !empty(...