文档章节

Nginx 手记(十三)rewrite规则

神奇Sam
 神奇Sam
发布于 2017/08/31 10:52
字数 501
阅读 1461
收藏 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
CentOS 7.4 Tengine安装配置详解(四)

十三、将请求的URL基于正则表达式进行rewrite重写 使用Tengine提供的全局变量或自定义变量,结合正则表达式和标志位实现URL重写以及重定向,通常可以实现http跳转至https、域名1跳转至域名2...

Marion0728
05/28
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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring 容器实现对bean的管理(注解方式解析,源码阅读)

因为最近在研究学习spring boot,所以这里想详细学习回顾了一下spring 容器对bean的一些管理方式和部分源码学习。 首先初始类AnnotationConfigApplicationContext,简单源码查看,支持两个参...

小海bug
19分钟前
0
0
数据结构:二分查找 java

二分查找的前提是有序存储,利用顺序存储和元素排序 /** * 二分查找,查找成功,返回下标记 * @param values * @param begin * @param end * @param key * @param <T> * @ret...

京一
36分钟前
0
0
@SpringBootApplication 注解

@SpringBootApplication注解是一个组合注解,包含以下注解 @Target(ElementType.TYPE) 注解的作用目标 @Retention(RetentionPolicy.RUNTIME) Reteniton的作用是定义被它所注解的注解保留多久,...

java.刘
49分钟前
0
0
sentinel自定义DataSource实战

序 本文主要研究一下如何自定义sentinel的DataSource,这里以jdbc为例。 maven <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sen......

go4it
今天
1
0
xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?

问题: 用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了。但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高。用RandomForest所需要的树的深度和Decisio...

tantexian
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部