Назад | Перейти на главную страницу

nginx переписывает URL-адрес для перенаправления, только если cookie не установлен

У меня два домена 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/;
    }
}

Как вы сами сказали, поскольку файлы cookie зависят от домена, файлы, установленные для .com, не будут видны .com.tw. Итак, в своем перенаправлении вы можете добавить такой параметр, как ?noredir=true. Затем, когда .com получает этот запрос, он не может перенаправить и установить cookie, чтобы он запомнил.