簡體   English   中英

匹配並使用nginx從URI路徑重定向“http://”(雙斜杠)

[英]match and redirect “http://” (double slash) from URI path with nginx

我希望nginx返回' http://example.com '請求url'http :// mydomain / url = http://example.com '使用conf blow,但它會給我'http:/xxx.com'。

怎么了,有人可以幫忙! 謝謝。

這是我的nginx conf

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

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

順便說一下,我會避免在頂級位置使用正則表達式,因為它通常比使用上述方法效率低,但你基本上也可以用你的方法做同樣的事情。

但請注意,無論如何,無條件地將用戶重定向到用戶提供的字符串本身可能會使您的站點容易受到某些攻擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM