仅当参数不存在时重定向 Nginx

pra*_*har 2 nginx

这是我在 Nginx 中重定向的要求 -

Redirect Example
1. www.example.com/gaming.html -> www.example.com/gaming-zone.html

No Redirect example (when params are present, dont redirect)
2. www.example.com/gaming.html?name=foo -> www.example.com/gaming.html?name=foo 
Run Code Online (Sandbox Code Playgroud)

我有一个非常简单的重定向设置 -

rewrite ^/gaming.html$ /gaming-zone.html redirect;
Run Code Online (Sandbox Code Playgroud)

它满足示例 1,但也重定向示例 2。有人可以分享如何修复规则,以便包含参数的 URL 不被重定向吗?

use*_*948 6

看来你至少没有尝试过获取信息......

根据 nginx http 核心模块文档。您可以使用 $is_args 或 $args 或 $arg_name。

因此,您可以简单地使用以下行:

if($is_args = ""){
    rewrite ^/gaming.html$ /gaming-zone.html redirect;
}
Run Code Online (Sandbox Code Playgroud)

由于您希望第二个 url 不更改,因此无需对该 url 执行任何操作。