0

我想将请求重定向到我服务器上的 /images/someimage.png 到http://some.other.server/images/someimage.png。我的 nginx 配置中有以下内容:

location ^/images/.*(png|jpg|gif)$ {
    rewrite ^/images/(.*)(png|jpg|gif)$ http://anotherserver.com/images/$1$2 redirect;
    return   302;
}

但是由于某种原因,当我请求http://test.com/images/test.png时它没有被击中(我只是得到一个 404,因为该文件在我的服务器上不存在)。

4

1 回答 1

1

如果我理解正确,您希望 302 将一台服务器上的 /image/ url 重定向到另一台服务器上的相同路径。你可以这样做:

location /images/ {
  rewrite ^ $scheme://anotherserver.com$request_uri redirect;
}

你不需要已经这样做return 302rewrite ... redirect(如果你想要 301 重定向而不是使用rewrite .... permanent

只要您在另一台服务器上也有相同的 url,您就不需要正则表达式,内置变量就足够了

注意:您的位置没有被击中的原因是您拥有location ^/images/.*(png|jpg|gif)$而不是location ~ ^/images/.*(png|jpg|gif)$. 换句话说,您忘记发出正则表达式匹配信号(~区分大小写或~*不区分大小写)

于 2012-10-28T18:31:49.940 回答