nginx 重写 URL 以仅在未设置 cookie 时重定向

ric*_*ard 5 rewrite nginx

我有两个域 www.domain.com 和 www.domain.com.tw。我希望用户被重定向到最近的服务器,但如果他们想查看其他服务器,他们可以通过单击站点中的链接。

我试图用 cookie 来做,但它似乎不起作用。我认为问题在于 cookie 是为引用 URL 而不是重定向 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/;
    }
}
Run Code Online (Sandbox Code Playgroud)

Gru*_*mpy 1

正如您自己所说,由于 cookie 与域相关,因此 .com.tw 不会看到 .com 上设置的 cookie。因此,在重定向中,您可以添加一个参数,例如?noredir=true. 然后,当 .com 收到该请求时,它无法重定向并设置 cookie 以使其记住。