在nginx中重定向

时间:2016-01-20 11:59:17

标签: redirect nginx

我是nginx的新手,并且配置简单的重定向。 这是我尝试重定向的非常简单的配置:

// Store form state at page load
var initial_form_state = $('#myform').serialize();

// Store form state after form submit
$('#myform').submit(function(){
  initial_form_state = $('#myform').serialize();
});

// Check form changes before leaving the page and warn user if needed
$(window).bind('beforeunload', function(e) {
  var form_state = $('#myform').serialize();
  if(initial_form_state != form_state){
    var message = "You have unsaved changes on this page. Do you want to leave this page and discard your changes or stay on this page?";
    e.returnValue = message; // Cross-browser compatibility (src: MDN)
    return message;
  }
});

从桌面访问网站时一切正常,我的请求是uwsgi。 但是从移动设备上我从浏览器ERR_TOO_MANY_REDIRECTS收到错误,请求网址看起来像http://X.X.X.X/mobile/mobile/mobile/mobile/mobile/mobile/mobile/mobile

显然,我遗漏了一些必不可少的,可能非常简单的作品。请帮帮我。

1 个答案:

答案 0 :(得分:1)

您已创建循环。第一次点击if/return时添加/mobile前缀。然后再次显示URI并且它会添加另一个/mobile前缀的相同语句,并且会继续重复。

要打破循环,您需要保护第一次添加if/return前缀后未采取的路径中的/mobile

也许:

server {
    listen 80 default_server;

    location /mobile {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/video_m/video.sock;
    }

    location / {
        if ($http_user_agent ~* '(phone|droid)') {
            return 301 $scheme://$host/mobile$request_uri;
        }

        include uwsgi_params;
        uwsgi_pass unix:/var/www/video/video.sock;
    }
}