Nginx的rewrite功能和apache一样,主要是实现URL地址的重定向。Nginx的rewrite功能是由PCRE软件支持,rewrite模块即 ngx_http_rewrite_module 模块。rewrite机制从某种意义上可以说为了美观或者搜索引起的友好搜索,提高排名等

1、rewrite语法规则

rewrite  regex replacement [flag]

rewrite:rewrite重写的关键字不可省略
regex:这里写的是正则表达式
replacement:这里是替换内容
flag:这里是flag标记

flag标记说明:

flag标记 说明
last 也就是apache里的(L)标记,表示完成rewrite,URL地址不会改变
break 本条规则匹配成功后,会停止匹配,不再匹配后面的规则,URL地址不会改变
redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent 返回301永久重定向,浏览器地址栏显示跳转后的URL地址,Nginx返回response状态码301

相关符号说明:

符号 说明
* 代表前面0或者多个字符
+ 代表前面1或者多个字符
? 代表前面0或1个字符
^ 代表字符串的开始位置
$ 代表字符串结束位置
$n 代表字符串结束第n个参数
. 通配符,代表任何字符

文件目录匹配

参数 介绍
-f 判断文件是否存在 返回值true为存在
!-f 判断文件是否存在 返回值false为不存在
-d 判断目录是否存在 返回值true为存在
!-d 判断目录是否存在 返回值true为不存在
-e 判断文件或目录是否存在 返回值true为存在
!-e 判断文件或目录是否存在 返回值true为不存在
-x 判断文件是否可执行 返回值true为可执行
!-x 判断文件是否可执行 返回值true为不可执行

2、rewrite实例:

  • 实例1  多域名跳转到同一域名
server{listen 80;server_name www.oyhdo.com oyhdo.com ;if($host != 'www.oyhdo.com' ){rewrite ^/(.*)$ http://www.oyhdo.com/$1 permanent;}
}
  • 实例2  当文件不存在时重定向到指定文件

1、访问test目录下的文件或目录不存在时,则跳转到test2下面的此文件或者目录,跳转后会将URL进行转换:

server{listen 80;server_name www.oyhdo.com;if(!-e $request_filename){rewrite  ^/test/(.*)$ http://www.oyhdo.com/test2/$1 permanent;}
}

2、访问test目录下的文件或目录不存在时,则重定向到index.html文件,跳转后URl不会进行转换:

server{listen 80;server_name www.gofor.com;if(!-e $request_filename){rewrite ^/test/(.*)$ index.html last;}
}

3、目录切换,表示将原目录转换成其他目录,【0-9a-z】表示转换后目录名称

server{listen 80;server_name www.oyhdo.com;if(!-e $request_filename){rewrite ^/test/([0-9a-z]+)/([0-9a-z]+)/(.*)$ http://www.oyhdo.com/test/$1$2$3 permanent;}
}
  • 实例3  匹配用户浏览器代理信息

如下,​​​​​​当匹配到浏览代理为Android和iPhone时进行重定向 test目录下的文件,改变访问的地址

server{listen 80;server_name www.oyhdo.com;if ( $http_user_agent ~* ("Android")|(iPhone)){rewrite ^/test/(.*)$ http://www.oyhdo.com/test/$1  permanent;}
}

【Nginx实战】rewrite规则详解相关推荐

  1. 第七章:nginx的rewrite规则详解

    模块ngx_http_rewrite_module 该ngx_http_rewrite_module模块用于使用PCRE正则表达式更改请求URI,返回重定向,并有条件地选择配置. 句法: break; ...

  2. nginx的Rewrite规则详解

    set指令 该指令用来设置一个新的变量. 语法 set $variable value; 默认值 - 位置 server,location,if variable:变量的名称,该变量名称要用" ...

  3. 运维之道 | Nginx rewrite 规则详解

    Nginx rewrite 规则详解 一.rewrite规则概念 rewirte 规则也称为规则重写,主要功能是实现浏览器访问 HTTP URL 的跳转,其正则表达式是基于 Perl 语言.通常而言, ...

  4. Nginx rewrite 规则详解

    Nginx rewrite规则详解 rewire规则也称为规则重写,主要功能是实现浏览器访问 Http Uri的跳转,其正则表达式是基于Perl语言.通常而言,几乎所有的Web服务器均可以支持URL重 ...

  5. Apache Rewrite 规则详解

    在开篇之前: 我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的.需要原文的可以在谷歌上搜索一下&qu ...

  6. Apache Rewrite规则详解[转]

    1.Rewrite规则简介:Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式.如果要想用 ...

  7. nginx rewrite规则详解

    Nginx Rewrite Rewrite Rewrite介绍 nginx通过ngx_http_rewrite_module模块支持url重写.支持if条件判断,但不支持else.另外该模块需要PCR ...

  8. apache rewrite规则详解

    出处 http://logo32.iteye.com/blog/1312421 [RewriteEngine On]表示重写引擎开,关闭off,作用就是方便的开启或关闭以下的语句,这样就不需要一条一条 ...

  9. nginx服务器安装及配置文件详解

    nginx服务器安装及配置文件详解 seanlook 5月26日 发布 4 推荐 97 收藏,9.2k 浏览 nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自 ...

最新文章

  1. IOS第四天-新浪微博 -存储优化OAuth授权账号信息,下拉刷新,字典转模型
  2. Aspx页面中直接编写javascript脚本
  3. Carplay Hub技术
  4. java 浅拷贝和深拷贝
  5. instagram技术_Instagram9位科技女孩进行技术采访的主要技巧
  6. 论文浅尝 | 神经符号推理综述(下)
  7. mac os 开启redis_关于Redis,学会这8点就够了
  8. sql 遍历结果print和表格形式
  9. 智能一代云平台(三十八):单元测试推动开发,如何避免服务之间依赖拖了工期
  10. Spring基础18——通过注解配置bean之间的关联关系
  11. 前端基础--jquery
  12. 基于PlayTennis数据集的决策树决策分析
  13. 计算机四个发展应用范围,计算机的四个发展阶段
  14. 计算机应用能力考试ppt,全国专业技术人员计算机应用能力考试 PPT 2003 题库版...
  15. 迅雷 android下载地址 http,Android HTTP边下边播
  16. 「源码解读」知名程序员 TJ 的 only 库
  17. php微信段子,微信朋友圈有趣的段子 朋友圈配图
  18. css文本行高是哪个属性_CSS样式----CSS属性:字体属性和文本属性(图文详解)...
  19. Opencv-python形态学滤波操作
  20. 【放码过来】谈双重支付

热门文章

  1. 巨杉数据库入选2020年广州市大数据优秀案例名单
  2. 感谢朋友们的关心。 我回来了。
  3. 如何做自媒体在一个月内赚到2万?
  4. Mysql之UDF提权
  5. 对innerHtml的理解(附上例子)
  6. php伪静态成html,伪静态是什么?伪静态与普通html静态网页区别?
  7. 如此取名可防IP被封
  8. 第02期:ClickHouse 单机部署以及从 MySQL 增量同步数据
  9. 计算机关闭盖子鼠标依然亮,在出现的窗口中点击选择关闭盖子的功能选项
  10. Download Burp Suite Community Edition