您现在的位置是:综合 >>正文

thinkphp nginx伪静态

综合91233人已围观

简介ThinkPHP项目部署到Nginx上,最烦人的就是URL里那个index.php。看着它就像鞋里进了颗石子,不致命,但每一步都硌得慌。今天直接说怎么把它去掉。 先说核心。Nginx伪静态规则,本质就 ...

ThinkPHP项目部署到Nginx上,静态最烦人的静态就是URL里那个index.php。看着它就像鞋里进了颗石子,静态不致命,静态但每一步都硌得慌。静态今天直接说怎么把它去掉。静态

先说核心。静态Nginx伪静态规则,静态本质就是静态一条location指令加一段正则匹配。你不需要理解全部原理,静态但得知道:所有请求进来,静态Nginx先看文件存不存在,静态不存在再交给ThinkPHP的静态入口文件处理。就这么简单。静态

拿我前两天帮朋友调的静态一个项目举例。他服务器是宝塔面板,ThinkPHP 6.0,伪静态怎么配都不生效。我上去一看,配置文件里写了三遍try_files,还带各种if判断,典型的网上抄来的大杂烩。我全删了,换成下面这段:

location / {  if (!-e $request_filename) {  rewrite ^(.*)$ /index.php?s=$1 last; } } 

刷新页面,好了。他问我为什么这么短,我说伪静态本来就不该长。你想想,Nginx每多处理一个正则,就多一分性能损耗。那些动不动贴几十行配置的,要么是在炫技,要么是没搞懂自己在干嘛。

但这里有个坑,得单独拎出来说。ThinkPHP 5.0之后,URL模式变了,走的是pathinfo解析。上面那段规则在5.0以下没问题,但如果你用的是TP6或TP8,最好换成官方推荐的写法:

location / {  try_files $uri $uri/ /index.php?$query_string; } 

注意区别了吗?try_files更优雅,它先尝试找真实文件,找不到就统一交给index.php处理。不需要正则,不需要rewrite,Nginx官方都推荐这么干。而且它能完美支持TP的路由分组、资源路由这些高级功能。

还有个细节很多人忽略。如果你用了pathinfo模式,还得检查下php.ini里的cgi.fix_pathinfo。默认是1,建议改成0。为啥?安全。改成0之后,Nginx不会去猜测请求的物理路径,直接走你的伪静态规则。网上那些被挂马的ThinkPHP站点,十有八九是这里没关。

说到安全,顺带提一嘴。伪静态配好之后,记得把runtime目录和.env文件加到Nginx的拒绝访问列表里。别问我是怎么知道的——上次有个客户,伪静态配好了,结果数据库配置被人从浏览器直接下载走了。那叫一个惨。

最后说个判断技巧。配完之后,别急着高兴,先在浏览器访问一个不存在的路由,比如/test/abc。如果返回404页面,说明伪静态生效了。如果返回500或者直接下载文件,说明你的PHP解析和Nginx没配合好。这时候别慌,检查一下fastcgi_pass的地址对不对,八成是socket路径写错了。

伪静态这玩意儿,配一次就够。配好了,URL干净了,路由好看了,搜索引擎也喜欢。配不好,一天到晚报错,烦都能烦死你。记住上面那两段核心配置,再加一个cgi.fix_pathinfo=0,基本就能横着走了。

Tags:

相关文章

  • 淘宝漏洞群群主是通过什么方式赚钱的

    综合

    “淘宝漏洞群”这个名头,听着像是一群技术宅在键盘上敲敲打打就能薅到平台羊毛。实际上,群里90%的“漏洞”根本不是什么系统后门,而是利用信息差和规则盲区做的灰色生意。群主不是黑客,更像个精明的中间商。 ...

    【综合】

    阅读更多
  • boss直聘说我违规但不知道哪违规

    综合

    账号被封那天,我刚投完第37份简历。页面刷新,一条红色提示弹出来:“您的账号因违规已被限制功能,请查看站内信了解详情。”我点进去,站内信只有一句话:“经系统检测,您存在违规行为。”没了。连个具体条款都 ...

    【综合】

    阅读更多
  • 区块链100问视频大全集

    综合

    有人花三万块买了张JPG头像,有人靠一部手机在链上赚到了第一桶金。区块链这东西,说复杂能写十本博士论文,说简单——你楼下卖煎饼的大妈搞懂了“不可篡改”四个字,也能明白为什么有人愿意为一张虚拟图片掏钱。 ...

    【综合】

    阅读更多


友情链接