Nginx位置重定向正则表达式无法正常工作

时间:2012-10-28 16:38:06

标签: regex nginx rewrite

我想将请求重定向到我的服务器上的/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因为myserver上不存在该文件)。

1 个答案:

答案 0 :(得分:1)

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

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

您不需要return 302 rewrite ... redirect已经这样做了 (如果您想要301重定向,请使用rewrite .... permanent

只要你在其他服务器上有相同的url,你就不需要正则表达式,内置变量就足够了

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