`
lionlx
  • 浏览: 285834 次
  • 性别: 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 伪静态 重定向

    ### Nginx 伪静态与重定向:深入解析与应用实例 #### 1. 引言 在现代网站开发与维护中,面对网页目录结构变动、网页重命名、扩展名改变或是网站域名变更等场景,如何高效处理这些变化,确保用户体验不受影响,同时...

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

    以下将详细介绍如何在Nginx中处理带参数的`rewrite`规则,以及如何去除或保留这些参数。 首先,`$query_string`变量包含了GET请求中的所有参数,而`$request_uri`则包含了原始URI,包括路径和查询字符串,但不包含...

    Nginx的Rewrite规则与实例

    ### Nginx的Rewrite规则与实例:深入解析与应用 在现代Web服务器管理与运维领域,Nginx因其高效、稳定以及丰富的功能而备受推崇。其中,Rewrite模块是Nginx的一项重要特性,它允许管理员对HTTP请求进行重写、重定向...

    nginx 301 302重定向跳转配置.docx

    Nginx 301 302 重定向跳转配置 Nginx 是一个功能强大的 Web 服务器软件,它提供了丰富的配置选项,其中包括重定向跳转配置。本文档将详细介绍 Nginx 301 302 重定向跳转配置的实现方法。 一、Nginx 301 跳转设置 ...

    Nginx关于Rewrite执行顺序详解.docx

    3. **last标志的处理**:如果`rewrite`指令后面带有`last`标志,那么当前的location块内的剩余规则将不再执行,转而重新开始查找location块的过程。 4. **break标志的处理**:`break`标志仅中断当前的Rewrite规则集...

    实例讲解nginx的rewrite规则

    ### 实例讲解Nginx的...通过上述实例和解释,我们可以看到Nginx中的`rewrite`规则是非常强大且灵活的,它不仅可以用于简单的URL重写,还可以根据不同的条件进行复杂的逻辑处理,从而实现更加高效和安全的服务配置。

    nginx设置rewrite规则

    这将把所有请求重定向到带参数`s`的PHP入口文件。 如果你的LNMP环境不是集成的,你需要直接在主配置文件`nginx.conf`或者每个虚拟主机的配置文件中写入rewrite规则。例如: ```nginx server { listen 80; server...

    nginx目录路径重定向的方法

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

    Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写[文].pdf

    Nginx 中 rewrite 实现二级域名、三级域名、泛域名、路径的重写 Nginx 中的 rewrite 模块是实现 URL 重写和.redirect 的强大工具。下面我们将详细介绍 Nginx 中如何使用 rewrite 实现二级域名、三级域名、泛域名、...

    nginx rewrite常用示例

    通过上述示例,我们可以看到 Nginx Rewrite 功能的强大之处在于能够灵活地处理各种复杂的 URL 重定向场景。无论是简单的 URL 重定向、基于 IP 的重定向还是复杂的基于 URI 的重定向,Nginx 都提供了丰富的工具和选项...

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

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

    实战Nginx:取代Apache的高性能Web服务器 张宴.扫描版

    6. **URL重写**:介绍如何通过Nginx的rewrite模块进行URL重定向和重写,实现更友好的网址结构和SEO优化。 7. **缓存机制**:讨论Nginx的缓存功能,如何设置缓存策略,提高响应速度,减轻后端服务器压力。 8. **...

    301重定向(nginx和Apache)

    在Nginx配置文件中,可以使用`rewrite`指令实现301重定向。 **示例:** ```nginx server { listen 80; server_name 123.com; if ($host = '123.com') { rewrite ^/(.*)$ http://www.123.com/$1 permanent; } ...

    详解Nginx中的重定向功能

    在Nginx配置中,重定向主要通过`return`指令或`rewrite`指令实现。`return`指令简单直接,它可以返回一个HTTP状态码和新的URL,从而触发重定向。例如: ```nginx location /oldpage { return 301 ...

    nginx解决跨域问题的实例方法

    浏览器的同源策略限制了JavaScript从一个源获取另一个源的数据,而Nginx作为一个强大的反向代理服务器,可以有效地解决这个问题。本篇文章将详细介绍如何利用Nginx解决跨域问题。 首先,了解跨域的基本概念。跨域是...

    让Nginx支持Rewrite功能,所依赖的PCRE包:pcre_8.35

    这个库为Nginx提供了对Perl语法的正则表达式的支持,使得我们可以使用复杂的规则来重定向或修改请求的URL。 PCRE库是由Vernon Kester设计并维护的,其主要目标是与Perl语言中的正则表达式兼容。这意味着在Nginx配置...

    nginx之rewrite

    Nginx中的rewrite模块是一个非常实用的功能,它允许用户在服务器中动态地重写URL,实现URL的灵活处理,包括URL重定向和内部跳转等操作。rewrite规则在nginx的配置文件中定义,通常在server、location和if指令块中...

Global site tag (gtag.js) - Google Analytics