nginx rewrite
rewrite的作用
rewrite可以实现url的重定向,把用户请求的url转发到另一个url,但用户浏览器地址并不改变
例如常用的伪静态化,就是通过rewrite实现的
/user/123 => /user.php?id=123
语法
rewrite regexreplacement [flag];
regex - 定义url匹配规则
replacement - 要重写的目标url
[flag] - 标志位,是可选项,定义重写后的相关操作
规则说明
(1)rewrite只能放在server{},location{},if{}中
(2)只能对域名后边的除参数外的字符串起作用
例如 http://z.com/a/we/index.php?id=1,只对/a/we/index.php重写,也就是 regex 匹配的是 /a/we/index.php 这个字符串
示例
(1)如果是IE浏览器发出的请求,就把请求转到ie目录下
if ($http_user_agent ~ MSIE) {
rewrite^(.*)$/ie/$1 break;
}
(2)对形如/images/bla_500x400.jpg的文件请求,重写到/resizer/bla.jpg?width=500&height=400地址
rewrite^/images/(.*)_(d+)x(d+).(png|jpg|gif)$/resizer/$1.$4?width=$2&height=$3? last;
这里适用了标志位-last,意思是这是最后一条rewrite规则
(3)域名跳转
server
{
listen 80;
server_name jump.test.com;
index index.html index.htm index.php;
root /opt/www;
rewrite^/http://www.test.com/;
}
(4)把符合规则的目录转换到其他目录
rewrite^/([0-9a-z]+)job/(.*)$/area/$1/$2;
(5)将文件名转成多级目录下的文件
例如 /job-123-456-789.html 指向/job/123/456/789.html
rewrite^/job-([0-9]+)-([0-9]+)-([0-9]+).html$/job/$1/$2/jobshow_$3.html last;
flag标志位
last : 相当于Apache的[L]标记,表示完成rewrite
break : 停止执行当前虚拟主机的后续rewrite指令集
redirect : 返回302临时重定向,地址栏会显示跳转后的地址
permanent : 返回301永久重定向,地址栏会显示跳转后的地址
last和break的区别
last不终止重写后的url匹配,即新的url会再从server走一遍匹配流程,而break终止重写后的匹配
- 43 Hot Flex and ActionScript 3.0 APIs, tips and tools for Autumn 2008
- 异步数据存储
- 谈谈基于SQL Server 的Exception Handling[中篇]
- C# AD(Active Directory)域信息同步,组织单位、用户等信息查询
- 如何仅使用TensorFlow C+来训练深度神经网络
- 捕获silverlight滚轮事件
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(30)-本地化(多语言)
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(28)-系统小结
- 用谷歌浏览器来当手机模拟器
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(27)-权限管理系统-分配用户给角色
- ASP.NET MVC5+EF6+EasyUI 后台管理系统-分配角色给用户
- 体验vs11 Beta
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(25)-权限管理系统-系统管理员(附生成器)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法