2013-08-03 33 views
78

Url yapısını yeniden düzenleme sürecindeyim. Belirli URL'ler için yönlendirme kurallarını ayarlamam gerekiyor - NGINX kullanıyorum. BöyleTek bir url nginx'te nasıl yönlendirilir?

Temelde şey:

http://example.com/issue1 --> http://example.com/shop/issues/custom_issue_name1 
http://example.com/issue2 --> http://example.com/shop/issues/custom_issue_name2 
http://example.com/issue3 --> http://example.com/shop/issues/custom_issue_name3 

teşekkürler! Sunucu direktifi

+3

"isse" veya "issue"?! Cevaplar "sorunu" olduğunu varsayalım ... –

+0

Sorun, yazım hatası düzeltildi – tokmak

cevap

84

koyun bu:

location /issue { 
    rewrite ^/issue(.*) http://$server_name/shop/issues/custom_issue_name$1 permanent; 
} 

Ya da çoğaltmak: Bir kaç yönlendirmeler daha çoğaltmak gerekirse

location /issue1 { 
    rewrite ^/.* http://$server_name/shop/issues/custom_issue_name1 permanent; 
} 
location /issue2 { 
    rewrite ^.* http://$server_name/shop/issues/custom_issue_name2 permanent; 
} 
... 
113
location ~ /issue([0-9]+) { 
    return 301 http://example.com/shop/issues/custom_isse_name$1; 
} 
+0

@Cybolic Sadece bunu 1.10.3 ile bir docker görüntüsünde test ettim ve bu iyiydi, yapılandırma dosyanızı bir şekilde sağlayabilir misiniz? Muhtemelen bir şeyleri kaçırıyorsunuzdur. –

28

, bir harita kullanmayı düşünebilirsiniz:

map $uri $redirect_uri { 
    ~^/issue1/?$ http://example.com/shop/issues/custom_isse_name1; 
    ~^/issue2/?$ http://example.com/shop/issues/custom_isse_name2; 
    ~^/issue3/?$ http://example.com/shop/issues/custom_isse_name3; 
    # ... or put these in an included file 
} 

location/{ 
    try_files $uri $uri/ @redirect-map; 
} 

location @redirect-map { 
    if ($redirect_uri) { # redirect if the variable is defined 
     return 301 $redirect_uri; 
    } 
} 
+4

Burada aradığım şey budur - dahil edilen bir dosyaya koymak, .htaccess dosyasını tam olarak RewriteRules ile değiştirmenin mükemmel bir yoludur. –

+2

Bu harita yaklaşımını mevcut bir konum/... proxy_pass tipi kurulumla nasıl birleştirirsiniz? –

+0

'@ redirect-map' konumunda 'if ($ redirect_uri =" ") {return 404;}' ve proxy_pass öğelerini takip edebilirsiniz. '$ Redirect_uri' kullanarak yeniden yazma gerekebilir. –

İlgili konular