使用场景

  1. URL 访问跳转,支持开发设置
    1. 网页跳转,兼容支持,展示效果等
  2. SEO 优化
  3. 维护
    1. 后台维护,跳转维护页面
    2. 流量转发
  4. 安全

指令

return

  • return <code> [text]
  • return <code> <url>
  • return <url>
    • 停止处理请求,直接返回响应码或者重定向到其他 url
    • 执行该命令后, location 中后续指令将不会被执行
    • 上下文 server、location、if
    • 默认值 nothing

rewrite

  • rewrite <regex> <replacement> [<flag>]
  • 上下文 server loaction if
  • 默认值 nothing
  • 参数
    • regex 待重定向的 url 正则表达式
    • replacement 重定向 url,可使用 $ 复用 regex 中的正则括号
    • flag (如果不指定,会继续执行 location 中的指令)
      • last 会对重写后的 url 发起新的请求,再次进入 server 段,重试 location 中的匹配
        • 遇到其他 rewrite,会递归执行下去(除非遇到 break 或者 不设置 flag 而后面带有 return 指令)
      • break 直接使用重写后的 url 进行目录查找,不再进行 location 查找
      • redirect 返回 302 临时重定向
      • permanent 返回 301 永久重定向

return 和 rewrite 优先级

  • 只要能执行到命令,那么 return > rewrite
  1. rewrite 如果没有设置 flag,会继续执行 location 中的指令
    1. 此时遇到 return ,会直接返回 return 的内容,而不会进行跳转

if

  • if (condition)
    • 上下文 server、location
    • 默认值 nothing
    • 参数
      • condition | 变量 | 意义 | | —- | —- | | $variable | 值为空或者0开头字符串会被当成 false 处理 | | = or != | 等于或不等于 | | ~ or !~ | 正则匹配或者非正则匹配 | | ~* | 正则匹配,不区分大小写 | | -f or !-f | 检查文件存不存在 | | -d or !-d | 检查目录存在或不存在 | | -e or !-e | 检查文件、目录、符号链接等存在不存在 | | -x or !-x | 检查文件可不可执行 |