目录
一、rewrite跳转场景
Rewrite 跳转场景主要包括以下几种:
1、可以调整用户浏览的 URL,看起来更规范,合乎开发及产品人员的需求
2、为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态 URL 地址伪装成静态地址提供服务
3、网址换新域名后,让旧的访问跳转到新的域名上。
4、服务端某些业务调整
二、rewrite跳转实现
Nginx 是通过 ngx_http_rewrite_module 模块支持 url 重写、支持 if 条件判断,但不支持else。
另外该模块需要 PCRE 支持,应在编译 Nginx 时指定 PCRE 支持,默认已经安装。
根据相关变量重定向和选择不同的配置,从一个 location 跳转到另一个 location,不过这样 的循环最多可以执行 10 次,超过后 Nginx 将返回 500 错误。
同时,重写模块包含 set 指令,来创建新的变量并设其值,这在有些情景下非常有用的,如记录条件标识、传递参数到其他location、记录做了什么等等。
三、rewrite实际场景
1、Nginx跳转需求的实现方式
使用rewrite进行匹配跳转
使用if匹配全局变量后跳转。Nginx服务本身全局变量
使用location匹配再跳转。匹配的访问URL路径,location可以匹配本地重写以及跨服务器跳转
2、rewrite放在server{}、if{}、location{}段中
location只对域名后面的除去传递参数外的字符串起作用:www.baidu.com/.......
3、对域名或参数字符串
使用if全局变量匹配
使用proxy pass反向代理
四、rewrite正则表达式
^ :匹配输入字符串的起始位置
$ :匹配输入字符串的结束位置
* :匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
+ :匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”
? :匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}”
. :匹配除“\n”之外的任