分享一个Nginx rewrite 问号问题

由于换了一套程序,需要将类型这种url Show.aspx?BookID=105161 rewrite 成 Show.php?BookID=105161,开始以为很简单,直接写成下面这种
rewrite ^/Show.aspx?BookID=([0-9]+)$ /Show.php?BookID=$1 last,结果发现不行,直接404了,经过不断尝试发现这样可以:

/Show.aspx /zhang.php?$query_string last;

网上解释的原因是:

1.nginx在进行rewrite的正则表达式中只会将url中?前面的部分拿出来匹配

2.匹配完成后,?后面的内容将自动追加到url中(包含?),如果不让后面的内容追加上去,请在最后加上?即可;

个人感觉是个bug。

时间: 2024-08-02 02:46:12

分享一个Nginx rewrite 问号问题的相关文章

nginx+rewrite+proxy+cache基本实验

今天分享下nginx+rewrite+proxy+cachenginx于apache的区别 1.nginx基于ip做限制小实验: worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_n

nginx 匹配问号 rewrite

今天同事问我 nignx跳转的问题匹配问号需要 需求是http://aaa.bbb.com/forum.php?id=123 跳转到 http://aaa.bbb.com/forum.php 在这里需要注意的是跳转前有问号,跳转后没有问号 这种情况我是用if解决的. nginx有一个变量是$query_string 它的用途就是定义问号以后的变量 在这个例子中它其实就是 id=123  这几个字符 开始配置的时候是 if ($query_string ~* "id=123$") {  

Nginx rewrite 中break与last指令的区别

PS:原创文章,如需转载,请注明出处,谢谢! 本文地址:http://flyer0126.iteye.com/blog/2257670 nginx rewrite指令语法:rewrite regex replacement [flag];默认值:无作用域:server,location,if如果一个URI匹配指定的正则表达式regex,URI就按照replacement重写.rewrite按配置文件中出现的顺序执行.flags标志可以停止/继续处理.如果replacement以"http://&

nginx rewrite标签配置以及用户认证配置

一.nginx  rewrite标签 rewrite 实现URL的改写主要是实现伪静态 1.  rewrite指令语法 指令语法:rewrite regex replacement[flag] 默认值:none 应用位置:server,location,if rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement部分内容,结尾是flag标记,下面是一个简单的URL Rewrite跳转 Rewrite ^/(.*)http://www.eti

nginx——rewrite模块

1.什么是Nginx的Rewrite规则? Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用PCRE(Perl Compatible Regular Expressions)Perl兼容正则表达式的语法进行规则匹配,如果 您需要Nginx的Rewrite功能,在编译Nginx之前,须要编译安装PCRE库. 通过Rewrite规则,可以实现规范的URL,根据变量来做URL转向及选择配置. (1)一些使用MVC框架的程序只有一个入口,可以通过Rewrite来实现. (

nginx rewrite重写与防盗链配置

nginx rewrite重写规则与防盗链配置方法 时间:2016-02-04 15:16:58来源:网络 导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标记的几种形式,盗链时返回403错误,允许的域名直接跟在第二行的域名后面. nginx rewrite重写规则与防盗链配置方法 nginx rewite 规则,官方文档:http://wiki.nginx.org/NginxHttpRewriteModule nginx rewrite规则格式:rew

Nginx Rewrite规则记录

Rewrite 是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术.它还可以实现限制特定IP访问网站的功能.很多情况下,某个 IP 的访问很容易造成 CPU 100% (比如 某些搜索引擎的固定抓取,别人大量的采集站点),这个时候我们就要利用一些有效的手段封掉对方的 IP,让他无法消耗服务器的资源,封 IP 的方法有很多种,如果你的 Web(Nginx|Apache|other) 服务器安装了 Rewrite 模块的话,也可以试试利用 Rewrite

[转] nginx rewrite 中brake last 区别

在使用nginx重写(即rewrite)机制时,大家一般会用到last和break,关于这两个指令的作用,网友问的挺多,网上的讨论也挺多,这里做个总结: 网友的给力解释: last: 重新将rewrite后的地址在server标签中执行 break: 将rewrite后的地址在当前location标签中执行 nginx官方解释: last:     stops processing the current set of ngx_http_rewrite_module directives fol

nginx rewrite规则语法

在新主机的迁移过程中,最大的困难就是WP permalink rewrite的设置. 因为旧主机是用的Apache, 使用的是WP本身就可以更改的.htaccess,没有太大的难度.而这次在VPS上跑的是Nginx,主要是因为Nginx的速度比Apache要快很多. 但是另一方面就不是那么舒服了,因为Nginx的rewrite跟Apache不同,而且是在服务器上面才能更改. 下面是其间的一些研究笔记.(以下用例如无特别说明均摘自nginx wiki) /1 Nginx rewrite基本语法 N