前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 重写 Query 参数

Nginx 重写 Query 参数

原创
作者头像
xcsoft
发布2022-05-27 13:44:20
1.4K0
发布2022-05-27 13:44:20
举报
文章被收录于专栏:星辰日记星辰日记

由于旧版项目, 依旧使用php-fpm模式提供api服务, 采用 类似 /api.php?m=account&act=login类似这种方式进行控制器分类.

目前的话 打算更换为其他框架, 使用路由来分配控制器.

由于前端及软件迁移成本较高, 就想着是否可以通过Nginx的伪静态来重写.

于是一开始尝试使用

代码语言:text
复制
location / {
  proxy_pass https://127.0.0.1:8787;
  rewrite ^api.php\?m=(.*)&act=(.*) /$1/$2 break;
}

直接对其进行重写, 但测试后发现并为达到预期的效果, 服务端接收到的 依旧只有/api.php

貌似并未被nginx匹配到, 查询过后发现 这样貌似是匹配不到路径的?

最终在查询过后, 发现可以通过 query_string 来对其进行匹配

代码语言:text
复制
location /api.php {
    proxy_pass http://127.0.0.1:8787;
    if ( $query_string ~ ^m=(.*)&act=(.*)) {
      set $a $1; 
      set $b $2;
      rewrite ^/(.*)$ /$a/$b break;
    }
}
    
location / {
    proxy_pass http://127.0.0.1:8787;
}

修改配置文件后, 再次对其进行测试, 成功将/api.php?m=account&act=login重写为/account/login

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档