nginx rewrite
Nginx Rewrite
2023-09-27 14:25:06 时间
nginx rewrite
rewrite的作用
rewrite可以实现url的重定向,把用户请求的url转发到另一个url,但用户浏览器地址并不改变
例如常用的伪静态化,就是通过rewrite实现的
/user/123 => /user.php?id=123
语法
rewrite regex replacement [flag];
regex - 定义url匹配规则
replacement - 要重写的目标url
[flag] - 标志位,是可选项,定义重写后的相关操作
规则说明
(1)rewrite只能放在server{},location{},if{}中
示例
(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终止重写后的匹配
rewrite可以实现url的重定向,把用户请求的url转发到另一个url,但用户浏览器地址并不改变
例如常用的伪静态化,就是通过rewrite实现的
/user/123 => /user.php?id=123
语法
rewrite regex replacement [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终止重写后的匹配
相关文章
- nginx中server_name的匹配规则
- [转] NGINX宏观手记
- 架构设计:负载均衡层设计方案(7)——LVS + Keepalived + Nginx安装及配置
- angular - 如何运行在起来 - 使用nginx
- ubuntu安装nginx时提示error: the HTTP rewrite module requires the PCRE library
- rewrite <= nginx
- 记录一下第一次安装和配置Nginx
- nginx配置location总结及rewrite规则写法
- nginx json 格式输出
- centos7下安装nginx(转)
- nginx使用ssl模块配置支持HTTPS访问【解决ssl错误】
- 企业级Nginx基于虚拟主机别名的设置
- [原]生产环境下的nginx.conf配置文件(多虚拟主机)
- 十分钟学习nginx
- Nginx搭建https服务器
- C# Nginx平滑加权轮询算法
- nginx配置ssl证书实现https访问
- 网关Zuul、Gateway、nginx的区别