nginx 根据路由匹配和请求参数配置 301 重定向
nginx 重定向常用两个配置 rewrite 与 return 。
rewrite 命令
使用方法:
rewrite 正则表达式 替换目标 flag标记 |
flag标记可以用以下几种格式:
last – 停止处理后续rewrite指令集,跳出location作用域,并开始搜索与更改后的URI相匹配的location,URL地址不变 |
示例:
if ($http_host = www.test.com) { |
return 命令
return是rewrite模块里的执行,执行阶段是rewrtie,可以写在 server、location、if 里面。
使用方法:
return code [text]; |
示例:
if ($http_host = www.test.com) { |
实际应用场景
需求1:
需要将原有 v1 路径重定向到 v2 去,比如 http://127.0.0.1/v1/details/134 重定向到 http://127.0.0.1/v2/details/123
nginx 配置
server { |
需求2:
由于历史原因,还有如下路径 http://127.0.0.1/page/l/?s=11&c=22&id=134 也需要重定向到 http://127.0.0.1/v2/details/134
从路径来看,以上 /page/p/ 是公用路径,通过参数不同来实现页面,跟很多的 MVC 框架控制路由思路大致一样。
所以这儿不能使用路由来匹配了,需要通过请求参数来重定向,配置如下:
|
添加以上配置,重启 nginx 之后,即可开启对应地址的 `301 重定向。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Leon!
评论





