![如何在 nginx 中重定向 IE6 用户](https://linux22.com/image/565735/%E5%A6%82%E4%BD%95%E5%9C%A8%20nginx%20%E4%B8%AD%E9%87%8D%E5%AE%9A%E5%90%91%20IE6%20%E7%94%A8%E6%88%B7.png)
我正在关注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
答案2
添加break
:
rewrite ^ /ie6 break;
该示例的目的可能是不将配置应用于您要重写的位置。
答案3
您需要确保将用户重定向到同一规则未处理的配置部分。
也许这样的事情有用吗?
location ^/ie6 {
break;
}