Nginx rewrite 获取问好“?”后面的参数

节选自 《Netkiller Web 手札》

3.2.4.1. http get 参数处理

需求如下

原理地址:
http://www.netkiller.cn/redirect/index.html?skuid=133

目的地址:
http://www.netkiller.cn/to/133.html			

注意:nginx rewrite 并不支持http get 参数处理,也就是说“?”之后的内容rewrite根部获取不到。

下面的例子是行不通的

			rewrite ^/redirect/index\.html\?skuid=(\d+)$ /to/$1.html permanent ;			

我们需要通过正在查出参数,然后赋值一个变量,再将变量传递给rewrite。具体做法是:

			server {
    listen       80;
    server_name www.netkiller.cn;

    #charset koi8-r;
    access_log  /var/log/nginx/test.access.log  main;

    location / {
        root   /www/test;
        index  index.html;

		if ($request_uri ~* "^/redirect/index\.html\?skuid=([0-9]+)$") {
                set $argv1 $1;
                rewrite .* /to/$argv1.html? permanent;
        }
    }
}			

测试结果

			[neo@netkiller conf.d]$ curl -I http://www.netkiller.cn/redirect/index.html?skuid=133
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 12 Apr 2016 06:59:33 GMT
Content-Type: text/html
Content-Length: 178
Location: http://www.netkiller.cn/to/133.html
Connection: keep-alive

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大闲人柴毛毛

提高Java代码质量的Eclipse插件之Checkstyle的使用详解

CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员...

3679
来自专栏闻道于事

Spring Boot yml格式配置

824
来自专栏macOS 开发学习

Mac OSX 开发基础控件学习之 NSOutlineView

在开发基于osx的Application的过程中,当我们需要显示一组列表结构的数据时,比较容易想到的控件是NSTableView;但如果你显示的数据有层级结构...

692
来自专栏恰同学骚年

.NET Core微服务之基于Ocelot+IdentityServer实现统一验证与授权

  这里,假设我们有两个客户端(一个Web网站,一个移动App),他们要使用系统,需要通过API网关(这里API网关始终作为客户端的统一入口)先向Identit...

1194
来自专栏程序员互动联盟

webkit浏览器常见开发问题

前段时间有人问我一个简单的问题,html如何创建解析的?  我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, ...

3047
来自专栏pangguoming

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解) 背景

背景      在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImpor...

2805
来自专栏大内老A

.NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配...

1809
来自专栏Python攻城狮

Django模型(数据库)及Django Query常用方法

Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL...

714
来自专栏冷冷

【jfinal修仙系列】修改ShiroPlugin支持jfinal3.0

在升级到jfinal3.0 以后,原有的shiroplugin不兼容,原来的 routes 是用通过JfinalConfig 注入 new ShiroPlugi...

18210
来自专栏python3

tkinter -- Text (3)

注意:first 没有使用 tag('b')属性,last 使用了 tag('b')属性

582

扫描关注云+社区