文档章节

Nginx 手记(十三)rewrite规则

神奇Sam
 神奇Sam
发布于 2017/08/31 10:52
字数 501
阅读 1460
收藏 0
点赞 0
评论 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
粉丝 18
博文 41
码字总数 27998
作品 0
广州
程序员
【PDF分享】Nginx 常见应用技术指南[Nginx Tips] 第二版.pdf

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

鉴客 ⋅ 2010/09/12 ⋅ 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 ⋅ 36

ubuntu下nginx安装手记

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

mfcai ⋅ 2013/01/03 ⋅ 0

Nginx与Apache的Rewrite规则实例对比

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

李佳顺 ⋅ 2012/07/14 ⋅ 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

CentOS 7.4 Tengine安装配置详解(四)

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

Marion0728 ⋅ 05/28 ⋅ 0

nginx rewrite规则详解

nginx rewrite规则详解 Published onDecember 26, 2011in Linux. 0 Comments Tags: apache, ngnix, rewrite. 最近在VPS上尝试配置安装一个网站,VPS安装了LNMP(Linux+Nginx+MySQL+php)在配......

fzxu_05 ⋅ 2013/03/19 ⋅ 0

Nginx的rewrite应用

Rewrite主要的功能是实现URL重写,Nginx 的 Rewrite 规则采用 PCRE Perl 兼容正则表达式的语法进行规则匹配,如相使用 Nginx 的 Rewrite 功能,在编译 Nginx 前要编译安装 PCRE 库。 一,Ngi...

小杨_Ivan ⋅ 2017/02/10 ⋅ 0

Nginx的Rewrite规则与实例

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

NILYANG ⋅ 2013/06/28 ⋅ 0

Linux下nginx支持.htaccess文件实现伪静态的方法

在Google上搜索的资料很多人都说nginx目前不支持.htaccess文件,我按照nginx的规则试验了一下,结果发现nginx是完全支持.htaccess文件的! 方法如下: 1. 在需要使用.htaccess文件的目录下新...

运维技术 ⋅ 2015/01/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

VS2015配置并运行汇编(一步一步照图做)【vs2017的链接在最后】

x64: TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. ; Last update: 2/1/02 ;.MODEL flat,stdcall x64 not su......

simpower ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

你真的明白RPC 吗?一起来探究 RPC 的实质

你真的明白RPC 吗?一起来探究 RPC 的实质 不论你是科班出身还是半路转行,这么优秀的你一定上过小学语文,那么对扩句和缩句你一定不陌生。缩句就是去除各种修饰提炼出一句话的核心,而不失基...

AI9o後 ⋅ 昨天 ⋅ 0

z-index设置失效?

今天碰到了一个问题,就是在给li设置提示框的时候,有用到遮罩效果,本来想把对应的出现在最顶层,可是不管将li设置的z-index值设为多大,li都没有出现在遮罩层之上。 我在网上查了z-index设...

IrisHunag ⋅ 昨天 ⋅ 0

CyclicBarrier、CountDownLatch以及Semaphore使用及其原理分析

CyclicBarrier、CountDownLatch以及Semaphore是Java并发包中几个常用的并发组件,这几个组件特点是功能相识很容易混淆。首先我们分别介绍这几个组件的功能然后再通过实例分析和源码分析其中设...

申文波 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部