分享

thinkPHP部署在Nginx站点二级目录时的伪静态规则-csweigou-2017-09-15

 不是简单的重复 2025-05-02

thinkPHP是一款国产的敏捷web开发框架,特别是5.0版本就是为API开发而生的,不管是做纯粹的web端项目,还是作为app的服务端都是非常不错的选择。这款框架上手特别快,只要具备良好的开发基本功的同学,基本上几天内就可以上手做项目了。今天项目组的小伙伴跟我说项目在开发环境是正常的,而到了测试环境则只有首页能够打开其他页面全部404.

其实thinkPHP拥有非常完善的路由机制,所以对伪静态是能够很好支持的。而开发环境是Apache,测试环境是Nginx,在服务器上创建虚拟目录后,通过Apache的组件可以直接加载网站目录中的.htaccess文件进行重写URL;而Nginx默认是不支持.htaccess的。首先我们可以知道thinkPHP在Nginx下的基础伪静态规则如下:

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

然而如果直接这样配置在服务器上,那么显然也是不行的,因为我们的项目是放在二级目录下面,而不是站点根目录下面(因为测试的时候会调用公司网站的微信接口,保持测试项目跟实际已经运行的项目保持在同一个域名下)。其实也比较简单,其实跟我们写apache的规则差不多。只需要把以上规则修改成如下即可:

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

是不是和写apache规则特别类似呢?对了,其中的jiewang就是这个项目的目录名称,其实不仅仅是thinkPHP,这种思维和写法也是适用于其他的框架的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多