文档章节

Nginx 手记(十三)rewrite规则

神奇Sam
 神奇Sam
发布于 2017/08/31 10:52
字数 501
阅读 1466
收藏 0

Nginx的rewrite规则

实现url重写以及重定向

场景

  1. URL访问跳转,支持开发设计
    • 页面跳转、兼容性支持、展示效果等
  2. SEO优化
  3. 运维
    • 后台维护、流量转发等
  4. 安全(实现伪静态)

配置语法

#rewrite规则
#regex:正则,匹配需要重写的请求
#replacement:重写的内容
#flag:标识符
语法:rewrite regex replacement [flag];
默认值:无
上下文:server、location、if

#flag讲解
last        停止rewrite检测,nginx内部发起新的请求获取资源返回
break       停止rewrite检测,直接从路径中获取资源返回
redirect    返回302临时重定向,地址栏会显示跳转后的地址
permanent   返回301永久重定向,地址栏会显示跳转后的地址,浏览器下次请求的时候,不会访问服务端而是直接访问重定向的地址。

如:
rewrite ^(.*)$ /pages/maintain.html break;
常用于系统维护时显示的维护页面。

使用场景

1、当访问路径是多级目录时候,为了方便搜索引擎收录,会对访问路径进行改写。
#如:一些论坛的文章页面,一般会按多级目录生成,则可以进行以下rewrite规则配置:
location / {
    rewrite ^/course-(\d+)-(\d+)-(\d+)\.html$ /course/$1/$2/course_$3.html break;
    index index.html index.htm;
}
当浏览器访问 http://www.sam.com/course-11-22-33.html 时候,nginx中的rewrite规则会匹配,并相应从root目录下的 /course/11/22/ 目录获取course_33.html 资源,返回给客户端。
2、如果相关条件不满足,进行rewrite
location / {
    #如果使用Chrome浏览器访问,而且链接匹配/nginx的,将会重定向到新地址
    if ($http_user_agent ~* Chrome) {
        rewrite ^/nginx http://www.baidu.com redirect;
    }
    
    #$request_filename文件名的路径如果不存在,则会rewrite,重定向到新的地址
    #-f:判断路径是否存在
    if (!-f $request_filename){
        rewrite ^/(.*)$ http://www.sam.com/$1 redirect;
    }
}

Rewrite规则优先级

执行server块的rewrite > 执行location匹配 > 执行选定的location中的rewrite

© 著作权归作者所有

共有 人打赏支持
神奇Sam
粉丝 22
博文 41
码字总数 27998
作品 0
广州
程序员
【PDF分享】Nginx 常见应用技术指南[Nginx Tips] 第二版.pdf

文档目录: 一、Nginx 基础知识 二、Nginx 安装及调试 三、Nginx Rewrite 四、Nginx Redirect 五、Nginx 目录自动加斜线: 六、Nginx Location 七、Nginx expires 八、Nginx 防盗链 九、Nginx...

鉴客
2010/09/12
1K
4
《实战Nginx:取代 Apache的高性能Web服务器》pdf下载

目录介绍: 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 1.4 Nginx与Apache、Lighttpd的综合对比 第2章 Nginx服务器的安装与配置 2.1 安装N...

绿悠悠
2010/06/17
16.5K
36
ubuntu下nginx安装手记

Nginx是一个高性能的HTTP和反向代理服务器. Nginx 使用 Unix 下常用的 './configure && make && make install' 过程来编译安装. configure 脚本确定系统所具有一些特性,特别是 nginx 用来处...

mfcai
2013/01/03
0
0
Nginx与Apache的Rewrite规则实例对比

Nginx Rewrite规则相关指令 Nginx Rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。一个简单的Nginx Rewrite规则语法如下: rewrite ^/b/(.).html /pl...

李佳顺
2012/07/14
0
1
Nginx与Apache的Rewrite规则的区别

Nginx与Apache的Rewrite规则的区别 一、Nginx Rewrite规则相关指令 Nginx Rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。一个简单的Nginx Rewrite规...

wape-yang
2013/04/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IDEA中Maven打包时如何跳过测试

方法1:直接使用IDEA提供的方式 Maven命令栏的工具栏有下图中的图标,上面就写着 Skip Tests 按下图标后,如下图,test就不可用了 直接使用package命令即可。 方法2:自己编辑maven命令 进入...

karma123
12分钟前
1
0
Device eth0 does not seem to be present,delaying initialization.

场景:在进行linux 主机克隆的时候,网卡初始化一般都会有问题,最常见的“Device eth0 does not seem to be present,delaying initialization.”,从字面意思 说eth0没有固化,延迟启动。由...

hnairdb
12分钟前
1
0
国内首个区块链试验区在海南成立

据新华社报道,10月8日,海南自贸区(港)区块链试验区正式在海南生态软件园授牌设立,这也是目前为止国内第一个区块链试验区。 该试验区位于海南生态软件园,与试验区同一天成立还有2家研究...

linuxCool
24分钟前
1
0
Java日期和时间获取问题

获取年月日时分秒 Calendar cal = Calendar.getInstance();//获取年int year = cal.get(Calendar.YEAR);//获取月,范围是0-11,最后使用需+1int month = cal.get(Cal...

lanyu96
43分钟前
11
0
Ceph学习笔记2-在Kolla-Ansible中使用Ceph后端存储

环境说明 使用Kolla-Ansible请参考《使用Kolla-Ansible在CentOS 7单节点上部署OpenStack Pike》; 部署Ceph服务请参考《Ceph学习笔记1-Mimic版本多节点部署》。 配置Ceph 以osdev用户登录: ...

LastRitter
47分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部