如何在 nginx 中重定向 IE6 用户

如何在 nginx 中重定向 IE6 用户

我正在关注http://wiki.nginx.org/HttpBrowserModule教程。

我有以下配置。

ancient_browser "MSIE 6.0";

if ($ancient_browser){
  rewrite  ^  /ie6;
}

这个问题是,我陷入了无限循环。

我该如何让它工作?!令我惊讶的是,官方文档上的示例甚至不起作用。

更新:

我当前的代码

server {

        listen 83;
        server_name {my ip goes here}


        location / {

                ancient_browser "MSIE 6.0";

                if ($ancient_browser){
                        rewrite ^ /ie6 break;
                }

                proxy_pass http://localhost:34881 ;

                proxy_set_header Host $host ;
                proxy_set_header X-Real-IP $remote_addr ;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
                proxy_set_header Country $geoip_country_code;

                proxy_cache cache;
                proxy_cache_valid 200 302 1h;
                proxy_cache_valid 404     1m;
                 add_header Pragma no-cache;
                expires epoch;
                if_modified_since off;
                add_header Last-Modified "";
}

更新 2:

我想出了下面的代码片段并且它可以工作。

if ($http_user_agent ~ "MSIE 6.0") {
    set $IE T;              
}

if ($uri != "/ie6/") {
    set $IE "${IE}RUE";
}

if ($IE = TRUE) {
    rewrite ^ /ie6 break;
}

如果有人有更好的解决方案,请发表评论..谢谢!

答案1

尝试改用$http_user_agent

if ($http_user_agent ~ "MSIE 6.0" ) {
    rewrite ^ /ie6 break;
}

或者看看话题。

答案2

添加break

rewrite ^ /ie6 break;

该示例的目的可能是不将配置应用于您要重写的位置。

答案3

您需要确保将用户重定向到同一规则未处理的配置部分。

也许这样的事情有用吗?

location ^/ie6 {
    break;
}

相关内容