匹配和重定向" http://" (带有nginx的URI路径中的(双斜线)

时间:2016-07-04 01:30:28

标签: regex http nginx uri ngx-http-rewrite-module

我希望nginx返回' http://example.com'请求网址' http://mydomain/url=http://example.com'使用conf blow,但它给了我' http:/xxx.com'。

什么错了,有人可以帮忙!感谢。

这是我的nginx conf

location ~ url=(.*)$ {
    return 301 $1;
}

1 个答案:

答案 0 :(得分:0)

除了Alexey Ten建议使用http://nginx.org/r/merge_slashes,这确实可能导致安全问题之外,您还可以使用以下内容,这可能是一种更好的方法(如果您在URL结构中设置了它) ,就是):

location /url= {
    if ($request_uri ~ ^/url=(.*)$) {
        return 301 $1;
    }
    return 403;
}

另一种选择是:

location /url=http:/ {
    rewrite ^/url=http:/(.*)$   http://$1;
}
顺便说一句,我会避免在顶级位置使用正则表达式,因为它通常比使用上述方法效率低,但你基本上也可以用你的方法做同样的事情。

但请注意,无论如何,无条件地将用户重定向到用户提供的字符串本身可能会使您的网站容易受到某些攻击。