`
lionlx
  • 浏览: 283068 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)Nginx: rewrite重定向的参数处理问题

 
阅读更多
原文:http://www.yeeann.com/archives/165.html

今天在给某网站写rewrite重定向规则时,碰到了这个关于重定向的参数处理问题。默认的情况下,Nginx在进行rewrite后都会自动添加上旧地址中的参数部分,而这对于重定向到的新地址来说可能是多余。虽然这也不会对重定向的结果造成多少影响,但当你注意到新地址中包含有多余的“?xxx=xxx”时,心里总还是会觉得不爽。那么该如何来处理这部分的内容呢?看了下面两个简单的例子你就会明白了。

例如:

把http://example.com/test.php?para=xxx 重定向到 http://example.com/new
若按照默认的写法:rewrite ^/test.php(.*) /new permanent;
重定向后的结果是:http://example.com/new?para=xxx
如果改写成:rewrite ^/test.php(.*) /new? permanent;
那结果就是:http://example.com/new

所以,关键点就在于“?”这个尾缀。假如又想保留某个特定的参数,那又该如何呢?可以利用Nginx本身就带有的$arg_PARAMETER参数来实现。

例如:
把http://example.com/test.php?para=xxx&p=xx 重写向到 http://example.com/new?p=xx
可以写成:rewrite  ^/test.php   /new?p=$arg_p?  permanent;

只求结果的朋友可以直接忽略前面的内容,看这里:
rewrite  ^/test.php  /new  permanent;       //重写向带参数的地址
rewrite  ^/test.php  /new?  permanent;      //重定向后不带参数
rewrite  ^/test.php   /new?id=$arg_id?  permanent;    //重定向后带指定的参数
分享到:
评论

相关推荐

    nginx目录路径重定向的方法

    修改root映射,通过Nginx rewrite内部跳转,设置别名alias映射实现,通过nginx的permanent 301绝对跳转实现. 1 nginx修改root映射 修改root映射实现nginx目录访问重定向是最简单的方式, 推荐采用这一种. location /...

    详解nginx配置url重定向-反向代理

    1、地址重定向:是指当使用者浏览某个网址时,将他导向到另一个网址的技术。常用在把一串很长的网址,转成较短的网址。因为当要传播某网站时,常常因为网址太长,不好记忆;又有可能因为换了网路的免费网页空间,...

    详解Nginx中的Rewrite的重定向配置与实践

    主要介绍了详解Nginx中的Rewrite的重定向配置与实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    详解nginx服务器http重定向到https的正确写法

    http重定向到https使用了nginx的重定向命令。那么应该如何写重定向?之前老版本的nginx可能使用了以下类似的格式。 rewrite ^/(.*)$ http://domain.com/$1 permanent; 或者 rewrite ^ http://domain.com$request_...

    nginx中带问号(?) 带参数的rewrite规则

    nginx带问号(?) 带参数的rewrite规则,并去掉问号和参数

    Nginx服务器中的重定向配置参考指南

    nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下: rewrite 正则表达式 替换目标 flag标记...

    详解Nginx中的重定向功能

    nginx 各参数翻译,作用 $arg_PARAMETER #这个变量包含GET请求中,如果有变量PARAMETER时的值。 $args #这个变量等于请求行中(GET请求)的参数,例如foo=123&bar=blahblah; $binary_remote_addr #二进制的客户地址。 ...

    Nginx URL重写rewrite机制原理及使用实例

    默认参数编译nginx就会支持rewrite的模块,但是也必须要PCRE的支持 rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。 rewrite语法格式及参数语法说明如下:...

    Nginx下配置301重定向的正确方法例子

    之前给nginx做301重定向的时候经常会这样写: 代码如下: server {  listen 80;  server_name www.jb51.net jb51.net;  if ($http_host = www.jb51.net) {  rewrite (.*) http://jb51.net$1;  }  … } ...

    Nginx下301重定向域名的方法小结

    linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下。 第一种情况:访问aaaaaaa站定向到bbbbbbbbbbb站 代码如下: server { server_naaaaaaame www.aaaaaaa.com ; rewrite ^(.*) ...

    nginx重写rewrite基础及实例分享

    nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配 -f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在...

    Nginx中泛域名配置的实例教程

    id=xxx都要重定向到静态文件 article/xxx.htm,nginx的rewrite比apache的强大很多,还可以用if语句,很容易理解,下面看看Nginx是如何进行Rewrite的! 提示:以下rewrite指令写在 nginx.conf 配置的 server { … } ...

    nginx rewrite 伪静态配置参数详细说明

    * last 相当于Apache里的[L]标记,表示完成rewrite * break 终止匹配, 不再匹配后面的规则 * redirect 返回302临时重定向 地址栏会显示跳转后的地址 * permanent 返回301永久重定向 地址栏会显示跳转后的地

    Linux 按照部署 Nginx 服务器 及相关依赖 - Nginx 配置讲解

    Nginx的配置文件位于`/etc/nginx/nginx.conf`,该文件是一...6. URL重写和重定向:使用rewrite指令可以修改URL,实现URL重写或重定向。 7. 缓存配置:配置Nginx的缓存行为,包括缓存路径、缓存过期时间、缓存规则等。

    详解常用的nginx rewrite重写规则

    主要介绍了详解常用的nginx rewrite重写规则,Nginx的rewrite功能是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。感兴趣的可以一起来了解一下

    详解Nginx几种常见实现301重定向方法上的区别

    本篇文章主要介绍了详解Nginx几种常见实现301重定向方法上的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    nginx rewrite 伪静态配置参数和使用例子

    -x用来判断文件是否可执行 flag标记有: * last 相当于Apache里的[L]标记,表示完成rewrite * break 终止匹配, 不再匹配后面的规则 * redirect 返回302临时重定向 地址栏会显示跳转后的地址 * permanent 返回301永久...

    nginx-1.17.7.zip

    Bugfix:使用"error_page"指令返回重定向时,带有正文的请求会被错误处理;该错误在 0.7.12 中出现过 Bugfix:使用 HTTP/2 时出现 socket 泄漏的情况 Bugfix:在 SSL 连接中处理流水线请求时可能会发生超时; 该...

    Nginx下WordPress链接(url伪静态)301永久重定向实现方法

    在几个blog程序中折腾的结果,导致url连续二次变化。这是第三次了。 nginx 通过rewrite 使用 permanent; 参数 成301永久url重定向

Global site tag (gtag.js) - Google Analytics