文档章节

nginx location 与 $request_uri 的匹配区别

jastme
 jastme
发布于 2015/11/10 15:36
字数 208
阅读 9433
收藏 3
举例  http://www.jastme.org/Handler/FileHandler.ashx?fid=207ec068-2571-404d-84cd-f4c2a475865f_152X152_1

我现在有这样一个需求

把http://www.jastme.org/Handler/FileHandler.ashx?fid=207ec068-2571-404d-84cd-f4c2a475865f_152X152_1

在nginx中重写成

http://www.jastme.org/Handler/FileHandler.ashx?fid=207ec068-2571-404d-84cd-f4c2a475865f_152X152


代码   错误示范

 location ~* /Handler/FileHandler\.ashx?([^_]+)(_[0-9]+)$ {
		set $m1 $1;
		rewrite  ^/(.*)$  /\1?$m1;
	}

这个为什么是错误的呢?

因为location只能匹配uri  不能匹配参数

大概意思     uri    

www.jastme.org/Handler/FileHandler.ashx?

参数

fid=207ec068-2571-404d-84cd-f4c2a475865f_152X152_1

就是这样  后面的这段在location中是不能匹配的,所以不管怎么写 都不会成功的,因为location的规则就不会生效



正确代码

        location ~*/Handler/FileHandler\.ashx?
        {
                if ($request_uri ~* ^/Handler/FileHandler.ashx\?([^_]+)(_[0-9]+)$) {
                set $m1 $1;
                rewrite ^/Handler/FileHandler.ashx /Handler/FileHandler.ashx?$m1? permanent;}

只有使用$request_uri 才能获取完整的链接

© 著作权归作者所有

共有 人打赏支持
jastme
粉丝 35
博文 133
码字总数 61506
作品 0
成都
程序员
Nginx将utf8编码的url解码成\x的16进制格式导致无法匹配静态文件的问题处理

例如请求/touch/article/北京/full.html,到达nginx后变成/ /touch/article/%E5%8C%97%E4%BA%AC/full.html, Nginx静态文件配置: location ~ ^/touch/article/..html$ { expires -1; root ......

hellooworld
2016/10/24
0
0
Nginx location模块整理

Nginx环境 转载于:http://www.cnblogs.com/zhaof/p/5945576.html?hmsr=toutiao.io&utmmedium=toutiao.io&utmsource=toutiao.io location模块 Nginx location location 指令的作用是根据用户......

wushank
06/29
0
0
nginx配置location [=|~|~*|^~] /uri/ { … }用法

nginx location介绍 Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的”/uri/”,可以是字符串或正则表达式。但如果...

beck_716
2017/01/19
0
0
Nginx的Rewrite规则与实例

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

NILYANG
2013/06/28
0
0
nginx配置location总结及rewrite规则写法

location正则写法 一个示例: 已开头表示精确匹配 如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。 开头表示uri以某个常规字符串开头,不是正则匹配 ~ 开头表示区分大小写的正则匹配...

steven
2016/08/16
1
0

没有更多内容

加载失败,请刷新页面

加载更多

Java GC机制详解

垃圾收集 Garbage Collection 通常被称为“GC”,本文详细讲述Java垃圾回收机制。 导读: 1、什么是GC 2、GC常用算法 3、垃圾收集器 4、finalize()方法详解 5、总结--根据GC原理来优化代码 ...

小刀爱编程
19分钟前
1
0
ORACEL学习--理解over()函数

二、理解over()函数 1.1、两个order by的执行时机 分析函数是在整个sql查询结束后(sql语句中的order by的执行比较特殊)再进行的操作, 也就是说sql语句中的order by也会影响分析函数的执行结果...

spinachgit
21分钟前
1
0
抽象语法树

import asttree = ast.parse('def hello_word(): print("hello world!")')def hell_word(): print(1)print(ast.dump(tree)) 语法树 可以基于这个实现另外一种编程语言...

colin_86
22分钟前
1
0
Akka查询设备组《fourteen》译

加入以下依赖到项目中: 介绍: 到目前为止,我们看到的会话模式很简单,因为它们要求Actor保持很少或没有状态。 特别: 设备actor返回一个读数,不需要更改状态。 记录温度,更新单个字段。...

woshixin
29分钟前
1
0
wait、notify、notifyAll 的用法

wait()、notify()、notifyAll()是三个定义在Object类里的方法,用来控制线程的状态。这三个方法最终调用的都是jvm的native方法, 随着jvm运行平台的不同可能有些许差异。 wait(): 使持有该对...

noob_fly
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部