2012-10-28 85 views
0

我想重定向请求到我的服务器上的/images/someimage.png到http://some.other.server/images/someimage.png。我在我的nginx的配置如下: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

如果我正确地理解你,你想302重定向/图像/ 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)$。换句话说,你忘了发信号匹配正则表达式(~区分大小写,或~*区分大小写)

+0

添加〜做了窍门。我只想重定向,如果它是该目录中的图像文件。 – user1781088