nginx的URL重写指令rewrite规则简明教程

  • 内容
  • 评论
  • 相关

在建站的日常折腾过程中各位站长应该或多或少都遇到过需要做伪静态或者新旧url地址301重定向的问题,nginx下则是使用rewrite来实现这些功能的。本篇文章目的就是针对nginx下的rewrite指令做一个汇总的简明教程。

1、rewrite指令的语法:

rewrite regex replacement [flag];

2、rewrite指令的执行顺序

1)nginx首先会执行配置文件的server段的重写规则

2)然后才会执行location段中的重写规则,关于location的执行优先级参考这篇文章:《nginx location url匹配

3)通常情况下,如果其中某步URI被重写,则重新循环执行1-3,直到找到真实存在的文件;循环超过10次,则返回500 Internal Server Error错误。

3、rewrite指令中的flag标志

  • last :相当于Apache里的(L)标记,表示完成并停止当前URL的后续rewrite,然后对当前重写的新 uri 在 rewrite 指令集上重新查找。
  • break: 停止处理当前URL的后续 rewrite 指令集,并不在重新查找,但是当前 location 内剩余非 rewrite 语句和 location 外的非 rewrite 语句可以执行。
  • redirect: 如果 replacement 不是以 http:// 或 https:// 等协议名开始的完整的URL而是一个相对路径则返回 302 临时重定向。
  • permant : 返回 301 永久重定向。


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,非商业性质可转载须署名链接,详见本站版权声明。

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注