先吐槽一句,Discuz伪静态这玩意儿,看着就几条规则,实际上坑得我半夜爬起来改配置,今天把这些年踩过的坑、花过的冤枉钱,一次性捋清楚。
最坑的就是规则跟服务器环境对不上,我刚开始用的是虚拟主机,Apache环境,网上一搜一堆.htaccess规则,复制粘贴上去,结果首页能开,帖子全404,后来才明白,人家规则是给Linux Apache的,你Windows主机路径大小写敏感,还有RewriteBase不对,后来换成Nginx,又是一套玩法,如果你用的是宝塔面板,直接在网站设置里选Discuz的伪静态模板,别自己瞎写,省事还不出错,但注意,宝塔自带的模板有时候跟你的Discuz版本旧了也会有兼容问题,我遇到过新装的Discuz X3.5用老模板,导致列表页分页无法访问,解决办法就是把官方最新的伪静态规则从Discuz官网下载下来,对照着改。

Discuz伪静态真没那么简单,五年踩坑经验全给你
第二个坑,是开启了伪静态之后,随手就得把“仅游客浏览”或者其他动态URL的入口关掉,有次我为了SEO好看,把板块和帖子都伪静态了,但没注意流量统计和手机版用的是动态链接,结果百度抓取的时候,一会儿静态一会儿动态,权重分散,关键词排名掉了一大截,正确做法是,伪静态之后,把所有内部链接统一换成静态地址,用Discuz的后台“界面→导航设置”里把链接改掉,或者用插件做全局URL替换。
第三个坑,就是插件冲突,现在好多免费的SEO插件号称能优化伪静态,其实啥也不干,还改你的规则文件,我踩过一次,装了某个插件后,论坛主题页面的浏览器地址栏正常,但点击下一页直接跳回首页,折腾两三天,最后发现是插件在render_hook里做了重定向,把带参数的分页地址给过滤了,卸载插件,清空缓存,恢复,所以插件别乱装,尤其是那种需要修改.htaccess或者nginx.conf的,记得先备份原文件。
再来说说推荐配置,我现在的做法是:服务器用Nginx,Discuz X3.5,然后在宝塔里选择“Discuz”伪静态,再手动把官方规则里新增的域名规则加上,同时开启Discuz自带的缓存和内存缓存(如果PHP支持,用Redis),因为伪静态之后,URL解析交给web服务器,对后端框架压力其实没小,反而可能因为规则匹配增加一点点CPU消耗,所以缓存一定要开,强烈建议把robots.txt写对,让搜索引擎只抓静态URL,别去碰动态的index.php?mod=...,不然前面全白干。
长期维护的话,每周看一次网站日志,重点关注404错误,很多404是因为旧帖子被删,但伪静态规则还在,或者是用户的收藏夹里是老的动态链接,如果你发现大量404,就做301跳转到对应静态页面,或者统一跳到首页,别让它一直报错,Discuz升级时,一定要先备份伪静态规则,因为升级程序可能会覆盖你的原始配置文件,我上次升级X3.4到X3.5,结果整个伪静态失效,原因就是升级把旧规则文件里的自定义部分删掉了,每次升级后,重新比对官方规则,再恢复你的自定义修改。
还有个小提醒,CDN加速和伪静态有个相爱相杀的关系,如果你开了CDN,一定在CDN后台把伪静态页面也设置缓存,不然每次回源都请求你的服务器,伪静态的优势就没了,CDN的缓存规则里不要缓存带后台登录路径和发帖接口的URL,否则别人改完帖子看不到效果,还会导致前台和后台数据不一致。
别迷信什么“万能伪静态代码”,网上那些帖子十年前发的,很多早就失效了,最靠谱的是去Discuz官方应用中心,或者官方论坛,找最新版的规则和教程,如果实在搞不定,花几十块钱找个懂行的帮你配一次,比你自己折腾三天省时间多了,这个钱别省。
就这些,希望对你有帮助。
发表评论