rewrite可以写在server段、location段和if段。语法:

rewrite regexp replacement [flag]

flag是标记。有4种标记,它们的作用如下表。

flag 说明
last 停止处理当前上下文中的其他重写模块指令,并为重写后的uri再次进行上下文的匹配
break 和break指令一样,都是停止处理当前上下文中的其他重写模块指令
redirect 返回临时重定向状态码302。当replacement部分不是以"http://"或者"https://"或者"$schema"开头的时候使用,"$schema"变量表示使用的是什么协议
permanent 返回永久重定向状态码301

注意:

last和break用来实现URL改写,此时浏览器中的地址不会改变,但实际上在服务器上访问的资源和路径已经改变了。

redirect和permanent用来实现URL跳转,浏览器中的地址会改变为跳转后的地址

在使用proxy_pass指令时要使用break标记。last标记在本条rewrite规则执行完后,继续在当前上下文对重写后的地址发起匹配请求,而break则在本次匹配完成后停止再次匹配。

例如下面的两条重写规则。

rewrite "^/bbs/(.*)/images/(.*)\.jpg$" www.linuxidc.com/bbs/$2/images/$1.jpg last;
rewrite "^/bbs/(.*)/images/(.*)\.jpg$" www.linuxidc.com/bbs/$2/images/$1.jpg break;

如果访问的是www.linuxidc.com/bbs/a/images/b.jpg则重写后为www.linuxidc.com/bbs/b/images/a.jpg,

但是重写后的地址仍然可以匹配到规则^/bbs/(.*)/images/(.*)\.jpg$,此时如果使用last标记,则会再次进行重写,最终导致URL重写循环,nginx默认支持10次循环,然后返回500状态码。

而如果使用break标记,则在重写完成后不会再次匹配重写。

例子1. 在server字段中写rewrite,使得任意以linuxidc.com结尾的访问重定向到www.linuxidc.com。

server_name  www.linuxidc.com;
rewrite (.*).linuxidc.com www.linuxidc.com permanent;

例子2. 在location字段中rewrite,使得localhost/bbs/*的访问都重定向到localhost/forum/*。

server {
listen 80;
server_name localhost;
location /bbs {
root html/;
index index.html;
rewrite "/bbs/(.*)" "/forum/$1" last;
}
}

可以测试一下,比如nginx安装目录为:/usr/local/nginx,那么在/usr/local/nginx/html中新建2个文件夹,bbs和forum,并且分别在这两个文件夹中都建立文件1.txt,分别写入

hello, bbs

hello, forum

然后访问http://localhost/bbs/1.txt, 可以看到返回hello, forum。 表示重写成功

附加一个基于openrestry的https方案    https://www.cnblogs.com/shihuc/p/7150900.html



nginx之重写的更多相关文章

  1. 很不错的NGINX URL重写实例

    转自:http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewrite ...

  2. nginx url 重写 [转]

    本文转自 http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewri ...

  3. Nginx URL重写(rewrite)配置及信息详解

    URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功 ...

  4. web服务器-Nginx URL重写

    web服务器-Nginx URL重写 一. URL重写介绍 和apache等web服务软件一样,rewrite的主要功能是实现URL地址的重定向.Nginx的rewrite功能需要PCRE软件的支持, ...

  5. nginx url重写 rewrite实例

    本文介绍下,在nginx中实现Url重写,学习rewrite的具体用法,有需要的朋友参考下吧. 原文地址:http://www.360doc.com/content/14/0202/20/142341 ...

  6. nginx URL重写

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  7. nginx rewrite重写

    通过官方文档可以看到,rewrite的作用上下文是   server location,可以写在 server里面  亦或location里面; 命令: if (条件) {} 条件判断 set #设置 ...

  8. 16、Nginx Rewrite重写

    1.Rewrite基本概述 1.1.什么是rewrite Rewrite主要实现url地址重写, 以及地址重定向,就是将用户请求web服务器的地址重新定向到其他URL的过程. 1.2.Rewrite使 ...

  9. nginx rewrite重写与防盗链配置

    nginx rewrite重写规则与防盗链配置方法 时间:2016-02-04 15:16:58来源:网络 导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标 ...

随机推荐

  1. 第七章 二叉搜索树 (a)概述

  2. eclipse-jee-mars-2-win32-x86_64安装activiti

    离线安装老是不行,只能在线安装了 选择Activiti BPMN Desisner,然后一直选择下一步,直到出现如下窗体: 幸亏这个插件很小,在线安装也不算慢

  3. php多进程pcntl学习(采集新浪微博)

    上面2篇文都简明了多进程中一些需要注意的地方,这次用多进程配合curl_mulit_*来做新浪微博的采集. 先把知识点和值得注意的坑列出 /* 需求:开3个进程,并且模拟多线程来采集新浪微博用户信息, ...

  4. halcon的tuple算子功能总结

  5. JavaScript事件 DOMNodeInserted DOMNodeRemoved

    JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定交互的瞬间.可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码. 13.1 事件流 ...

  6. Spring MVC的handlermapping之请求分发如何找到正确的Handler(BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping)

    本文讲的是Spring MVC如何找到正确的handler, 前面请求具体怎么进入到下面的方法,不再细说. 大概就是Spring mvc通过servlet拦截请求,实现doService方法,然后进入 ...

  7. 避免Block中的强引用环

    [避免Block中的强引用环] In manual reference counting mode, __block id x; has the effect of not retaining x. ...

  8. os.path等os模块函数

    os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...

  9. WordPress 3.7.1-web截屏插件整合教程-Xproer.ScreenCapture

    插件下载(PHP):wordpress 3.7.1, 说明:由于许多插件可能使用相同钩子,导致冲突,所以提供手支方式整合. 1.上传插件目录. 说明:WordPress 3.7.1 使用的是TinyM ...

  10. SQL SERVER 2012数据库:开启防火墙导致外部无法连接数据库解决办法

    SQL SERVER 2012数据库:开启防火墙导致外部无法连接数据库解决办法 将以下代码存为OpenSqlServerPort.bat文件: netsh advfirewall firewall a ...