苏南大叔在上一篇文章中,通过调整dedecms的后台设置,把原本纯正的静态html系统,变成了动态php的网站。好吧,需求就是这么变态,现在的需求是,把dedecms变成伪静态的。就是说,表面上看是html的文件,但是实际上是动态的php文件。

苏南大叔:dedecms 如何设置全站伪静态? - dede伪静态
dedecms 如何设置全站伪静态?(图3-1)

事实上,很多cms系统,都是支持伪静态设置的。在后台里面点击一个选项,然后设置下nginx/apache/iisrewrite配置文件,就可以完成伪静态了。但是,伪静态这个需求,对于dedecms来说,是一件很痛苦的事情。

本文测试环境:php72/dedecmsV5.7SP2

设置动态浏览

因为伪静态的实质上还是动态。所以,需要先在dedecms的后台,设置为动态浏览。那么,大家可以查看苏南大叔的这篇文章。

dede后台设置伪静态

路径如图所示,伪静态的选项,有些隐蔽,不是很好找。路径是:系统=》系统基本参数=》核心设置=》是否使用伪静态。

苏南大叔:dedecms 如何设置全站伪静态? - dede静态化
dedecms 如何设置全站伪静态?(图3-2)

如果大家想知道,这个官方开启伪静态之后的逻辑,可以全局搜索cfg_rewrite,就可以找到对应的url变化逻辑。

苏南大叔:dedecms 如何设置全站伪静态? - cfg_rewrite
dedecms 如何设置全站伪静态?(图3-3)

不过,苏南大叔这边实验的时候,这个后台的设置项目,似乎是没有生效。想要生效的话,还需要手动修改/data/config.cache.inc.php中的$cfg_rewriteY。修改之后,原来页面中的一系列.php文件url就又变成了.html文件了。

如果有些链接地址404了,请检查是否设置了对应文档或者栏目动态浏览,是否正确设置了rewrite规则。

设置rewrite规则

苏南大叔这边的实验是以nginx为基础的。当然,鉴于dede的用户特性,很有可能您是iis或者apache的。那么,请自行百度相关规则吧。对于apache用户,个人还可以表示理解。而iisphp的用户,苏南大叔暂时表示无法理解。

location / {
    index index.php index.html index.htm;
    rewrite "^/index.html$" /index.php last;
    rewrite ^/plus/list-([0-9]+)\.html$ /plus/list.php?tid=$1;
    rewrite ^/plus/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3;
    rewrite ^/plus/view-([0-9]+)-1\.html$ /plus/view.php?arcID=$1;
    rewrite ^/plus/view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2;
  }

测试伪静态结果

使用如下命令,使得伪静态规则生效。

nginx -t
nginx -s reload

然而,官方的这个伪静态规则的设置结果,非常的差强人意。菜单栏中的链接,栏目更多字样的链接,以及标签tag链接,都没有发生变化。只有列表的分页和文章页面的地址的伪静态生效了。

结论

想要更高端的伪静态效果,就需要更改dede的源码了。如果您想知道如何更改dede源码,使得伪静态生效。请查看苏南大叔的后续文章内容。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   dede

本站的忠实读者小伙伴,正在阅读下面这些文章: