使用 nginx 从 URI 路径匹配并重定向 "http://"(双斜杠)

match and redirect "http://" (double slash) from URI path with nginx

我想要 nginx return 'http://example.com' with request url 'http://mydomain/url=http://example.com' 使用 conf blow,但它给了我 'http:/xxx.com'.

怎么了,有人可以帮忙吗!谢谢。

这是我的 nginx 配置文件

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

除了 Alexey Ten 建议使用 http://nginx.org/r/merge_slashes,这确实可能会导致安全问题,您还可以使用以下方法,无论如何这可能是更好的方法(如果您已经设置URL结构,即):

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

另一种选择是:

location /url=http:/ {
    rewrite ^/url=http:/(.*)$   http://;
}

顺便说一句,我会避免在顶级位置使用正则表达式,因为它通常比使用上述方法效率低,但您基本上也可以用您的方法做同样的事情。

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