一、使用场景
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)