write 规则介绍

Rewite 规则作用

  • Rewrite规则可以实现对url的重写,以及重定向

作用场景:

  • URL访问跳转,支持开发设计,如页面跳转,兼容性支持,展示效果等
  • SEO优化
  • 维护:后台维护、流量转发等
  • 安全

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

配置语法:

  • Syntax: rewrite regex replacement [flag];
  • Default:——
  • Context:server、location、if

简单实例

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

解释说明:

  • 会把所有的请求都重定向到 /pages/maintain.html 页面

常用的正则表达式

在linux下,可以用pcretest来测试

小示例

rewrite index\.php$ /pages/maintain.html break;
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}

解释说明

  • \     --转义字符
  • ( ) --用于匹配括号之间的内容,通过$1、$2调用

(.*) 会把所有参数的内容提取,传到/msie/下

rewrite配置语法中的flag参数

last 停止rewrite检测【如果没有匹配到,会继续向下匹配】

break 停止rewrite检测【如果没有匹配到,则不再向下匹配,直接返回结果404】

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

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

last与break的区别案例

test_rewrite1.conf

server {
listen 80 default_server;
server_name www.zhangbiao.com; access_log /var/log/nginx/log/host.access.log main; root /opt/app/code;
location ~ ^/break {
rewrite ^/break /test/ break;
} location ~ ^/last {
rewrite ^/last /test/ last;
} location /test/ {
default_type application/json;
return 200 '{"status":"success"}';
}
}

可以在终端使用 curl -vL 可以看到请求的全过程

curl -vL www.zhangbiao.com/last/

  

访问

http://www.zhangbiao.com/test/

访问

http://www.zhangbiao.com/last/

访问

http://www.zhangbiao.com/break/

可以发现访问 last 的时候新建立了一个请求 /test/ ,而访问/break/ 请求的时候 会去 /opt/app/code 下找相应的资源,没找到所以报错

Rewrite规则_redirect和permanent区别

test_rewrite1.conf

server {
listen 80 default_server;
server_name www.zhangbiao.com; access_log /var/log/nginx/log/host.access.log main; root /opt/app/code;
location ~ ^/imooc {
rewrite ^/imooc http://www.imooc.com/ permanent;
#rewrite ^/imooc http://www.imooc.com/ redirect;
} }

 

redirect 表示临时的重定向 ,只要后端服务是开者的。每次访问 /imoc 都会重定向到  http://www.imooc.com

permanent 表示永久重定向,第一次访问成功后,把后端服务关闭后,访问/imoc 仍然会重定向到  http://www.imooc.com

rewrite 规则使用场景案例

test_rewrite.conf

server {
listen 80;
server_name www.zhangbiao.com;
root /opt/app/code; location / {
rewrite ^/course-(\d+)-(\d+)-(\d+)\.html$ /course/$1/$2/course_$3.html break;
if ($http_user_agent ~* Chrome) {
rewrite ^/nginx http://coding.imooc.com/class/121.html redirect;
} if (!-f $request_filename) {
rewrite ^/(.*)$ http://www.baidu.com/$1 redirect;
}
index index.html index.htm;
} error_page 500 502 503 504 404 /50x.html;
}

  

访问在 /opt/app/code/course/11/22 下存在的资源文件

http://www.zhangbiao.com/course-11-22-33.html

访问在 /opt/app/code/course/11/22 下不存在的资源文件  

http://www.zhangbiao.com/course-11-22-5

rewrite优先级规则

  • 执行server 块的rewrite 指令。将所有的网站都重定向同一个网站。
  • 执行location匹配。
  • 执行选定的location中的rewrite。

  

Nginx 之 Rewrite 规则的更多相关文章

  1. Nginx的Rewrite规则与实例

    通过Rewrite规则可以实现规范的URL.根据变量来做URL转向及选择配置,用好Rewrite有时起到事半功倍的效果. 语法 Nginx的Rewrite相比Apache的要好理解很多,主要使用指令有 ...

  2. Apache和Nginx的Rewrite规则对比

    一.Apache的rewrite 1.Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的(.h ...

  3. Nginx 设置rewrite规则是遇到的一个{}大括号引发的报错问题

    一个群友提到: 用nginx image_filter模块裁图,用!拼宽高能够实现,现在想用参数传宽高总是报错,配置如下:   location ~ ^/images/.* {     if ( $q ...

  4. Nginx之Rewrite规则

    IF语句: http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_rewrite_module.html#if 首先申明nginx只有i ...

  5. nginx 带? rewrite 规则

    由于需要重定向 url ,nginx需要rewrite .参考文献 http://huangqiqing123.iteye.com/blog/2083434 需求:将http://10.106.1.3 ...

  6. nginx 重定向 rewrite 规则

    1.rewrite配置 server { listen 80 default_server; server_name jeson.t.imooc.io; access_log /var/log/ngi ...

  7. 修改Nginx 伪静态Rewrite规则 安装Chevereto

    Chevereto 是目前最为强大的 PHP 图床系统,通过它可部署多用户公开或私有的图片存储服务,现在 Chevereto 出了免费的版本,小伙伴可以围观一下. https://github.com ...

  8. nginx的rewrite规则

    301跳转: server { listen 80; server_name www.xiaofan.com; return 301 https://$server_name$request_uri; ...

  9. Nginx配置location总结及rewrite规则写法

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 32.0px "Helvetica Neue"; color: #323333 } p. ...

随机推荐

  1. 算法习题---5.11邮件传输代理的交互(Uva814)

    一:题目 当某人从user1@mta1发送给另一个人user1@mta2时,这两个MTA将会通信. 如果两个收件人属于同一个MTA,发送者的MTA只需与这个MTA通信一次就可以把邮件发送给这两个人. ...

  2. Qt编写气体安全管理系统10-数据导出

    一.前言 数据导出一般指导出到excel表格,可能有部分用户还需要导出到pdf,因为pdf基本上不可编辑,防止用户重新编辑导出的数据,excel可能绝大部分用过电脑的人都知道,广为流行,主要就是微软的 ...

  3. Linux记录-批量安装zabbix(转载)

    同一文件夹下建立pwd.txt,格式如下: ip username password ip username password #!/bin/bash cat pwd.txt | while read ...

  4. Python基于socket模块实现UDP通信功能示例

    Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端     import ...

  5. springboot整合mybatis的时候报错Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

    今天闲来无事,学习springboot整合mybatis,在bilibili看视频学的,视频中在dao层的interface上面加上org.apache.ibatis.annotations.Mapp ...

  6. Linq中demo,用力看看吧

    本文导读:LINQ to SQL全称基于关系数据的.NET语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能.Linq中where查询与SQL命令中的Where作用相似,都是起到范围限定 ...

  7. Docker快速安装

    目前装Docker得最简单方式就是脚本安装了,方法如下: curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh 安装后 ...

  8. 【GStreamer开发】GStreamer播放教程03——pipeline的快捷访问

    目的 <GStreamer08--pipeline的快捷访问>展示了一个应用如何用appsrc和appsink这两个特殊的element在pipeline中手动输入/提取数据.playbi ...

  9. Ansible-Ad_Hoc临时命令的使用

    Ad_Hoc临时命令的使用 1.使用场景: 所有的临时获取信息的都可以使用,比如节前健康检查.临时更新配置文件. 2.用法: ansible -i 主机 -m 模块 选项 3.常用的命令选项: -v ...

  10. 虚拟机中使用Samba实现文件共享

    首先我们给虚拟机安装samba服务(如果搭的是别的仓库记得开仓库) 输入命令:yum install samba samba服务的配置文件在,我们来看一下/etc/samba/smb.conf 输入命 ...