NGINX返回302错误页面而不是302重定向

时间:2015-04-27 15:34:41

标签: nginx

我的服务器块上有这个部分:

    location /mycoolurl {
             rewrite /mycoolurl(.*) $1 redirect;
    }

当有人在浏览器中尝试时 http://coolserver/mycoolurl/它尝试重定向到:

http://coolserver/

此外,一切都喜欢 http://coolserver/mycoolurl/foo/bar重定向到:

http://coolserver/foo/bar

但是,如果我尝试访问 http://coolserver/mycoolurl 它显示了一个默认的nginx错误页面:

302 - Found

预期的行为是302重定向到http://coolserver,而不是显示错误页面,因为它不是错误。

如何获得预期的行为?

1 个答案:

答案 0 :(得分:1)

当您尝试访问/ mycoolurl时,您的正则表达式(。*)不会捕获任何内容。因此,Nginx在“Location”标题中返回一个空值以及302响应代码。大多数浏览器认为这种组合不正确并显示错误。

为了防止这种情况,您需要修改重写规则,例如,这样:

<div><img width="100%" src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSj2c33fdt1ugB8VBuE5V37wnmPoxWMknX9JnGycNiH2yr3BpDKVA"></div>