2012-10-28 36 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