nginx只有在未设置cookie的情况下才会重写URL

我有两个域www.domain.com和www.domain.com.tw。 我希望用户被redirect到最近的服务器,但是如果他们想要查看另一台服务器,他们可以通过点击站点中的链接。

我试图用cookie来做,但似乎没有工作。 我认为问题在于cookie是为引用URL设置的,而不是redirect的URL,所以nginx甚至不会看到cookie。 我怎样才能做到这一点? 这是我迄今的尝试。

server { listen 80; server_name www.domain.com.tw; set $redir ""; if ($http_accept_language ~* "en") { set $redir "1"; } if ($http_cookie ~* "noredir") { set $redir ""; } if ($redir = "1") { rewrite ^ https://www.domain.com/; } } 

正如你自己所说的,因为cookie是依赖于域的,.com上的.com不会被.com.tw所看到。 因此,在您的redirect中,您可以添加一个参数,如?noredir=true 。 然后当.com收到这个请求时,它不能redirect并设置它记住的cookie。