thinkPHP是一款国产的敏捷web开发框架,特别是5.0版本就是为API开发而生的,不管是做纯粹的web端项目,还是作为app的服务端都是非常不错的选择。这款框架上手特别快,只要具备良好的开发基本功的同学,基本上几天内就可以上手做项目了。今天项目组的小伙伴跟我说项目在开发环境是正常的,而到了测试环境则只有首页能够打开其他页面全部404.
其实thinkPHP拥有非常完善的路由机制,所以对伪静态是能够很好支持的。而开发环境是Apache,测试环境是Nginx,在服务器上创建虚拟目录后,通过Apache的组件可以直接加载网站目录中的.htaccess文件进行重写URL;而Nginx默认是不支持.htaccess的。首先我们可以知道thinkPHP在Nginx下的基础伪静态规则如下:
location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } }
然而如果直接这样配置在服务器上,那么显然也是不行的,因为我们的项目是放在二级目录下面,而不是站点根目录下面(因为测试的时候会调用公司网站的微信接口,保持测试项目跟实际已经运行的项目保持在同一个域名下)。其实也比较简单,其实跟我们写apache的规则差不多。只需要把以上规则修改成如下即可:
location /jiewang/ { if (!-e $request_filename){ rewrite ^jiewang/(.*)$ /jiewang/index.php?s=$1 last; break; } }
是不是和写apache规则特别类似呢?对了,其中的jiewang就是这个项目的目录名称,其实不仅仅是thinkPHP,这种思维和写法也是适用于其他的框架的。