通过 nginx 屏蔽 302 重定向链接不起作用

通过 nginx 屏蔽 302 重定向链接不起作用

我正在尝试屏蔽联盟链接,因此我想通过 nginx 进行 302 重定向

我想将所有/go链接重定向到相应的联盟链接,因此所有链接重定向都会像mydomain.com/go/affiliate重定向到 >https://www.affiliatelink.com

现在这就是我所拥有的

location /go {
                rewrite ^/affiliate$ https://www.affiliatelink.com redirect; 
     }

我尝试了所有方法,但似乎无法让它工作。我需要在特定文件上执行此操作吗?

我已经尝试过/sites-enabled/default/conf.d/nginx.conf

答案1

您的重写不起作用,因为您请求的 URL 路径/go/affiliate只是rewrite精确路径上的匹配/affiliate,无论如何都找不到location /go。修复这个问题很简单也很明显,但出于性能原因,您应尽可能避免使用正则表达式。

不要使用这种方法rewrite,而是使用以下两种替代方法之一:

  1. 如果只有几个 URL 路径需要匹配,请location对每个路径使用:

    location /go/affiliate {
        return 302 https://affiliate.example.com/;
    }
    
  2. 如果您有大量链接,我认为超过 7 个左右,请使用 a map

    map $uri $aff_redirect {
        default            "";
        "/go/affiliate"    "https://affiliate.example.com/";
        # more links
    }
    

    Amap进入http任何块外面的块中server

    要使用它,请检查$aff_redirect相应的块中的变量server

    if ($aff_redirect) {
        return 302 $aff_redirect;
    }
    

相关内容