2012-04-23 7 views
0

私はnginxを新しくしています。リダイレクトを設定する必要がありますが、Nginxのリダイレクトは正規表現ベースです。Nginx:複数のURLフォーマットを1つのインラインで同じフォーマットにリダイレクトする

私達は私達の最新のコードを起動し、どのような基本的には、以下の

https://uat1.lipsum.com/browse 
https://uat1.lipsum.com/popular 
uat1.lipsum.com/browse/[anything] 
uat1.lipsum.com/popular/[anything] 

TO ...

https://uat1.lipsum.com/discovery 
https://uat1.lipsum.com/discovery 
uat1.lipsum.com/discovery/[anything] 
uat1.lipsum.com/discovery/[anything] 

のすべてのインスタンスをリダイレクトする、 "ブラウズ" や「人気の出現をすべて交換します"と"発見 "

私はいくつかの方法を試しました...

ベストI c ouldは次のようになりました。これは適切にリダイレクトされますが、他の形式はそうではありません。

https://uat1.lipsum.com/browse 
https://uat1.lipsum.com/popular 

location /browse/ { 
    rewrite ^(.*)/browse/(.*)$ /discover/ permanent; 
    } 

    location /browse { 
    rewrite ^(.*)/browse /discover permanent; 
    } 

location /popular/ { 
    rewrite ^/popular/ /discover/ permanent; 
    } 

    location /popular { 
    rewrite ^/popular /discover permanent; 
    } 
} 

答えて

2

nginx.conf後方参照の魔法を使用してください。正規表現を()に入れると、一致した式が取得され、$ 1、$ 2、$ 3などを使用すると、キャプチャされたテキストの1番目、2番目、3番目などがプルされます。

location /browse/ { 
    rewrite ^/browse/(.*)$ /discover/$1 permanent; 
    } 

    location /browse { 
    rewrite ^/browse$ /discover permanent; 
    } 

location /popular/ { 
    rewrite ^/popular/(.*)$ /discover/$1 permanent; 
    } 

    location /popular { 
    rewrite ^/popular$ /discover permanent; 
    } 
} 

詳細については、hereを参照してください。

+0

ご説明いただきありがとうございます。それは素晴らしい作品です! – jed

関連する問題