nginx rewrite重写

nginx rewrite重写

引言:Linux rewrite是什么?

Rewrite规则也称为规则重写,主要功能是实现浏览器访问HTTP URL的跳转,其正则表达式基于perl语言。重要用途如下

a、对搜索引擎优化(Search Engine Optimization,SEO)友好,利于搜索引擎抓取网址页面;

b、隐藏网址的URL真实地址,浏览器显示更加完美;

c、网站变更升级,可以基于Rewrite临时重定向到其他页面;

Rewrite配置示例

句法:Syntax: rewrite regex replacement [flag]
默认:Default: –
语境:Context: server,location,if
#用于切换维护页面场景
#rewrite ^(.*)$ /page/maintain.html break;

Rewrite标记Flag

rewrite指令根据表达式来重定向URL,或者修改字符串,可以应用于server,location,if环境下,每行rewrite指令最后跟一个flag标记,支持的flag标记有如下表格所示:

last本条规则匹配完成后,停止匹配,不再匹配后面的规则break本条规则匹配完成后,停止匹配,不再匹配后面的规则redirect返回302临时重定向,地址栏会显示跳转后的地址permanent返回301永久重定向,地址栏会显示跳转后的地址

last与break区别

break 只要匹配到规则,则会去本地配置路径的目录中寻找请求的文件;

而last只要匹配到规则,会对其所在的server(…)标签重新发起请求。

扫描二维码关注公众号,回复: 8739164 查看本文章

break请求:
1、请求rewrite.drz.com/break
2、首先:会去查找本地的/code/test/index.html;
3、如果找到了,则返回/code/test/index.html的内容;
4、如果没找到该目录则报错404,如果找到该目录没找到对应的文件则403
last请求:
1、请求rewrite.drz.com/last
2、首先:会去查找本地的/code/test/index.html;
3、如果找到了,则返回/code/test/index.html的内容;
4、如果没找到,会对当前server重新的发起一次请求,rewrite.drz.com/test/
5、如果有location匹配上,则直接返回该location的内容。
4、如果也没有location匹配,再返回404;

nginx的rewrite常用规则参考:

  1. ~ 为区分大小写匹配

  2. ~* 为不区分大小写匹配

  3. !和!*分别为区分大小写不匹配及不区分大小写不匹

  4. -f和!-f用来判断是否存在文件

  5. -d和!-d用来判断是否存在目录

  6. -e和!-e用来判断是否存在文件或目录

  7. -x和!-x用来判断文件是否可执行

  8. last 相当于Apache里的[L]标记,表示完成rewrite,呵呵这应该是最常用的

  9. break 终止匹配, 不再匹配后面的规则

  10. redirect 返回302临时重定向 地址栏会显示跳转后的地址

  11. permanent 返回301永久重定向 地址栏会显示跳转后的地址

发布了41 篇原创文章 · 获赞 7 · 访问量 870

猜你喜欢

转载自blog.csdn.net/qq_45682385/article/details/103766785