我正在尝试屏蔽联盟链接,因此我想通过 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
,而是使用以下两种替代方法之一:
如果只有几个 URL 路径需要匹配,请
location
对每个路径使用:location /go/affiliate { return 302 https://affiliate.example.com/; }
如果您有大量链接,我认为超过 7 个左右,请使用 a
map
。map $uri $aff_redirect { default ""; "/go/affiliate" "https://affiliate.example.com/"; # more links }
A
map
进入http
任何块外面的块中server
。要使用它,请检查
$aff_redirect
相应的块中的变量server
。if ($aff_redirect) { return 302 $aff_redirect; }