概念:
rewrite即url重写,主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程,比如访问baidu.com就会重定向到www.baidu.com
URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中
和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向,Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的,默认参数编译nginx就会支持rewrite的模块,但是也必须要PCRE的支持
rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记
使用场景:
url地址跳转,例如用户访问old.com就会跳转到oldboy.com,或者当用户通过http的方式访问old.com时,就会跳转至https的方式访问oldboy.com
url伪静态,将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时减少动态url地址对外暴露过多的参数,提升更高的安全性
搜索引擎SEC优化依赖于url路径,以便支持搜索引擎录入
可以调整用户浏览的url,看起来更规范,合乎开发及产品人员的需求
配置语法:
- 语法格式:rewrite regex replacement [flag];
- 默认配置:–
- 配置区域:server、localhost、if
rewrite语法格式及参数语法说明:
关键字:其中关键字error_log不能改变
正则:perl兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成replacement
flag标记:rewrite支持的flag标记
flag标记说明:
last #本条规则匹配完成后,继续向下匹配新的location URI规则
break #本条规则匹配完成即终止,不再匹配后面的任何规则
redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
配置位置:
配置示例:
rewrite为固定关键字,表示开始进行rewrite匹配规则
regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址
replacement部分是http://www.czlun.com/$1 $1,是取自regex部分()里的内容。匹配成功后跳转到的URL
flag部分 permanent表示永久301重定向标记,即跳转到新的 http://www.czlun.com/$1 地址上
正则表达式:
\ | 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$” |
---|---|
^ | 匹配输入字符串的起始位置 |
$ | 匹配输入字符串的结束位置 |
* | 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” |
+ | 匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“oll”,但不能匹配“o” |
? | 匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}” |
. | 匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式。 |
(pattern) | 匹配括号内pattern并可以在后面获取对应的匹配,常用$0…$9属性获取小括号中的匹配内容,要匹配圆括号字符需要\(Content\) |
配置范本:
凡是访问域名abc.com都会被重定向到www.abc.com