背景:
一个老的TP3.2官方人才网的项目,服务器一直被人攻击,Apache根本顶不住,加了cdn也无济于事,(加高防的好像要不少钱),换了nginx终于是能顶住了。然后在宝塔上配了Apache转nginx的伪静态。
BUG:
人才网内的搜索一直会多urldecode一遍
解决方案:
折腾了一下午,都没有完全解决,最后发现TP有四种路由模式。
ThinkPHP支持四种URL模式,可以通过设置URL_MODEL参数来定义,包括普通模式、PATHINFO、REWRITE和兼容模式。
1.普通模式:‘URL_MODEL’=>0,
http://serverName/appName/?m=module&a=action&id=1
2.PATHINFO模式:‘URL_MODEL’=>1,(系统默认的模式)
3.REWRITE模式:‘URL_MODEL’=>2,
该URL模式和PATHINFO模式功能一样,除了可以不需要在URL里面写入口文件,和可以定义.htaccess 文件外。
例如,我们可以增加如下的.htaccess内容把所有操作都指向index.php文件。
4.兼容模式:‘URL_MODEL’=>3,
兼容模式是普通模式和PATHINFO模式的结合,并且可以让应用在需要的时候直接切换到PATHINFO模式而不需要更改模板和程序,基本上可以支持任何的运行环境。
最后切换成最后一种兼容模式,就解决了。
–更新
兼容模式也有bug了,我只能再改到普通模式,竟然也解决了。