2017-06-12 21 views
0

我想爲我的一個NGINX配置使用更輕的代碼。我只需要在以下四行中寫出以下四行(如果可能!):如何在nginx中對不同的重寫規則進行分組?

location /en/contact { 
    rewrite ^/.* https://$server_name/contact permanent; 
} 

location /en/quality { 
    rewrite ^/.* https://$server_name/quality permanent; 

location /de/contact { 
    rewrite ^/.* https://$server_name/contact permanent; 
} 

location /de/quality { 
    rewrite ^/.* https://$server_name/quality permanent; 
} 

謝謝!

+0

「輕」是什麼意思?前綴位置(您現在擁有)可能是最有效的。您可以使用一個效率較低的正則表達式 - 但也更少打字。 –

+0

我的目標是有最小的打字。我怎麼能在這種情況下使用正則表達式?我在這方面很新穎......效率是一個重點......我想比較兩個版本。 – Savi

回答

0

使用最少的打字,你可以使用一個rewrite語句中的任何位置塊外:

rewrite ^/(en|de)/(contact|quality) https://$server_name/$2 permanent; 

如果方案和服務器名稱不會改變,第二個參數可以只用/$2取代。有關更多信息,請參閱this document

或者,你可以使用正則表達式location塊:

location ~ ^/(en|de)/(contact|quality) { 
    return 301 https://$server_name/$2; 
} 

同上,有關方案和服務器名稱。請注意,正則表達式位置塊的評估順序非常重要 - 匹配勝利的第一條規則。有關更多信息,請參閱this document

+0

完美地工作。謝謝! – Savi