nginx 匹配问号 rewrite
2016-01-25 11:14
411 查看
今天同事问我 nignx跳转的问题匹配问号需要
需求是http://aaa.bbb.com/forum.php?id=123 跳转到 http://aaa.bbb.com/forum.php
在这里需要注意的是跳转前有问号,跳转后没有问号
这种情况我是用if解决的。
nginx有一个变量是$query_string 它的用途就是定义问号以后的变量
在这个例子中它其实就是 id=123 这几个字符
开始配置的时候是
后来经过查看,nginx rewrite 会直接匹配问号之前的内容,问号后面的内容会直接添加rewrite
这样就会造成,每次rewrite后的url 还会再添加id=123 这样,跳转前跟跳转后就没有区别了。
效果就是
http://aaa.bbb.com/forum.php?id=123 rewrite http://aaa.bbb.com/forum.php?id=123
这个可以从http_header中的location中看出来。这样的跳转每次location都是
http://aaa.bbb.com/forum.php?id=123。这样就造成死循环了。
后来查看wiki nginx跳转去掉问号内容是这样操作的
rewrite ^(.*) http://aaa.bbb.com/forum.php? last;
就是在rewrite后的URL后面添加一个问号,这样,跳转前的问号内容就不再追加到挑战后的链接后面了。
正确的配置就是:
本文出自 “飘客” 博客,请务必保留此出处http://zhqaihnn.blog.51cto.com/5257485/1738144
需求是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$") { rewrite ^(.*) http://aaa.bbb.com/forum.php last; }但是测试结果302死循环
后来经过查看,nginx rewrite 会直接匹配问号之前的内容,问号后面的内容会直接添加rewrite
这样就会造成,每次rewrite后的url 还会再添加id=123 这样,跳转前跟跳转后就没有区别了。
效果就是
http://aaa.bbb.com/forum.php?id=123 rewrite http://aaa.bbb.com/forum.php?id=123
这个可以从http_header中的location中看出来。这样的跳转每次location都是
http://aaa.bbb.com/forum.php?id=123。这样就造成死循环了。
后来查看wiki nginx跳转去掉问号内容是这样操作的
rewrite ^(.*) http://aaa.bbb.com/forum.php? last;
就是在rewrite后的URL后面添加一个问号,这样,跳转前的问号内容就不再追加到挑战后的链接后面了。
正确的配置就是:
if ($query_string ~* "id=123$") { rewrite ^(.*) http://aaa.bbb.com/forum.php? last; }
本文出自 “飘客” 博客,请务必保留此出处http://zhqaihnn.blog.51cto.com/5257485/1738144
相关文章推荐
- 关于 nginx
- [CentOS 7] 安装nginx第一步先搭建nginx服务器环境
- 【linux j2ee环境搭建】之三:nginx安装部署
- Nginx
- nginx配置location总结及rewrite规则写法
- Nginx 工作进程运行示意图
- ci中让nginx能使用.htaccess文件
- Linux下的Nginx的安装详解
- CentOS7 Nginx负载均衡
- Nginx启动错误:error while loading shared libraries: libpcre.so.1
- nginx日志通过rsyslog传入到日志服务器指定目录
- Nginx的安装
- Nginx服务器
- 浅谈初次搭建nginx+php+mysql遇到的问题
- Nginx 教程
- 配置nginx1.8支持thinkPHP3.2 pathinfo模式
- lnmp环境下实现nginx负载均衡
- nginx下的laravel在网站目录的二级目录下url重写的方法
- 查找nginx安装的路径以及相关安装操作命令
- nginx服务器中的安全配置