停止 Nginx 重写,破坏位置块后面的所有页面

停止 Nginx 重写,破坏位置块后面的所有页面

我必须重写 nginx.conf 中包含特定查询参数的 URL;

举个例子:-

location /brands/exampleA {

    if ($arg_cat = "9") {
        return 301 /page/brand-filter;
    }

    if ($arg_cat = "38") {
        return 301 /page/category/brand-filter;
    }

}

这些 URL 重写随后将重写example.com/brands/exampleA/?cat=9example.com/page/brand-filterexample.com/brands/exampleA/?cat=38example.com/page/category/brand-filter

这些运行完美,但问题是它们破坏了位置块的每个其他子页面,例如,以下页面将无法加载并出现 Nginx 错误:-

example.com/brands/exampleA/range1
example.com/brands/exampleA/range2
example.com/brands/exampleA/range3
example.com/brands/exampleA/range4

那么,我是否可以在位置语句中添加一些内容来阻止任何内容应用于之后的任何内容exampleA- 这些重写应该仅匹配 ?cat= 查询参数。

答案1

您的配置当前使用前缀位置,这意味着当请求的 URI开始于价值/brands/exampleA

要将匹配限制为仅一个 URI,请使用完全符合句法:

location = /brands/exampleA/ { ... }

这个文件了解详情。

相关内容