1

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

怎么了,谁能帮忙!谢谢。

这是我的 nginx 配置

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

1 回答 1

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;
}

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

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

于 2016-07-04T17:40:45.627 回答