使用场景
- URL 访问跳转,支持开发设置
- 网页跳转,兼容支持,展示效果等
- SEO 优化
- 维护
- 后台维护,跳转维护页面
- 流量转发
- 安全
指令
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 永久重定向
- last 会对重写后的 url 发起新的请求,再次进入 server 段,重试 location 中的匹配
return 和 rewrite 优先级
- 只要能执行到命令,那么 return > rewrite
- rewrite 如果没有设置 flag,会继续执行 location 中的指令
- 此时遇到 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 | 检查文件可不可执行 |