Nginx—— Rewrite规则的使用

一、使用场景

1、URL访问跳转

(1)页面跳转

(2)兼容性支持(比如新老版本交替时,给老版本一条访问道路)

(3)展示效果(比如缩短前台界面的地址栏的url,增强用户体验)

2、SEO优化

 谷歌和百度的搜索引擎排名一般都和url的复杂程度有一定关系,url太过复杂,不利于seo优化。所以,这里对url进行一定程度的缩短和伪静态的改写都有利于seo优化。

3、维护时的作用

(1)比如我们将后台进行临时性的维护,要挂一个维护页面。

(2)或者将一部分功能进行流量的转发。

4、安全

使用rewrite规则可以实现伪静态,也就是将我们真实的动态的页面进行伪装。让黑客骇客抓取的时候,感觉不出这是一个明显的动态页面。

 

二、配置语法

Syntax:rewrite regex replacement 【flag】

default:——

Context:server、location、if

注:nginx官方文档:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

举例:【进行紧急维护页面rewrite配置】   

rewrite ^(.*)$ /data/errorPage/maintain.html break;

说明:意思是将所有的访问都重定向到 /data/errorPage/maintain.html 页面

 

三、正则表达式【书写rewrite基础,必须】

 

. 匹配除换行符以外的任意字符
0次或1次匹配前面的字符【zo? 与"z"和"zo"匹配,但与"zoo"不匹配   即 {0,1}
+ 1次或多次匹配前面的字符【zo+ 与"zo"和"zoo"匹配,但与"z"不匹配   即 {1,}
* 0次或多次匹配前面的字符【zo* 与"z"和"zoo"匹配  即 {0,}
\d 匹配数字
^ 匹配字符串的开始
$ 匹配字符串的结束
{n} 匹配 重复n次  【o{2}与'Bob'中的"o"不匹配,但与"food"中的"oo"匹配
{n,} 匹配 重复n次或更多次
[c] 匹配单个字符c
[a-z]

匹配 a-z小写字母的任意一个

[^a-z] 反向字符范围,与不在指定范围内的任意字符匹配【匹配除a-z范围内的所有字符】
\ 转义字符(匹配具有特殊含义的符号时,就需要对那个特殊符号进行转义)【比如.】
() 标记子表达式的开始和结尾,通过 $1 , $2 调用

 

四、rewrite配置语法中的flag参数

last 停止rewrite检测【如果没有匹配到,会继续向下匹配】
break 停止rewrite检测【如果没有匹配到,则不再向下匹配,直接返回结果404】
redirect 返回302临时重定向,地址栏会显示跳转后的地址
permanent 返回301永久重定向,地址栏会显示跳转后的地址

 

五、使用rewrite规则

1、rewrite规则场景(1)

 

2、rewrite规则场景(2)

 

你可能感兴趣的:(Nginx)