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 技术分享

Filter、Listener 学习总结

4187
来自专栏Linux驱动

第1阶段——uboot分析之启动函数bootm命令 (9)

本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0...

1805
来自专栏程序猿DD

从零开始的Spring Security Oauth2(二)

本文开始从源码的层面,讲解一些spring Security Oauth2的认证流程。本文较长,适合在空余时间段观看。且涉及了较多的源码,非关键性代码以…代替。...

2416
来自专栏文大师的新世界

5. ListView应用

ListView大概是所有移动应用都会用到的组件了,大部分都在首页,这章结合redux来看如何从API取数据再到如何应用redux更新渲染组件ListView。

1445
来自专栏Spark学习技巧

Kafka源码系列之分组消费的再平衡策略

一,Kafka消费模式 从kafka消费消息,kafka客户端提供两种模式: 分区消费,分组消费。 分区消费对应的就是我们的DirectKafkaInputDS...

7656
来自专栏大内老A

[WCF REST] 提高性能的一个有效的手段:条件资源获取(Conditional Retrieval)

条件获取(Conditional Retrieval)旨在解决这样的问题:客户端获取某个资源并对其进行缓存,当再次获取相同资源时,如果资源数据与之前获取的一致,...

1766
来自专栏积累沉淀

java事物处理

事物处理 什么是事物:个人认为事物,就是对数据库进行一组操作动作的集合,如果一组处理步骤要么全发生,要么一步也不执行,称这组处理步骤为一个事物。当所...

2239
来自专栏pangguoming

终极解决方案:org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has alr

org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStr...

1641
来自专栏Java帮帮-微信公众号-技术文章全总结

Apache、struts1、struts2文件上传下载的3种方式

/*jsp的上传(导入第三方upload.jar)*/ //用Apache的SmartUpload方式上传,共5部 //1.引入SmartUpload Smar...

4687
来自专栏Linux驱动

第1阶段——uboot分析之启动函数bootm命令 (9)

本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0" 中...

2459

扫码关注云+社区