2010-05-07 23 views
6

Henüz başka nginx yeniden yazma kuralı soru yeniden yazın:nginx alt alan

nasıl http://*.domain.com için http://www.*.domain.com bir yeniden yazma yapabilirim? Sunucu faydan

+0

Benzer soru: http://stackoverflow.com/questions/2498712/nginx-subdomain-rewrite –

cevap

7
if ($host ~* www\.(.*)) { 
    set $host_without_www $1; 
    rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo' 
} 

Cevap: https://serverfault.com/questions/139579/nginx-subdomain-rewrite

+5

Bu yaklaşım günümüzde önerilmemektedir. Bkz. [Ortak tuzaklar hakkında bu bölüm] (http://wiki.nginx.org/Pitfalls#Using_If). –

+0

Önerilen yaklaşım nedir? – Tony

2
server { 
    listen 80; 
    listen 443; 
    server_name ~^www\.(\w+)\.domain\.com$; 
    location/{ 
    rewrite^$scheme://$1.domain.com$request_uri? permanent; 
    } 
} 
+0

Bunun bir çift sorgu dizesi oluşturduğuna dikkat edin, '/? Foo = bar' için bir istek' /? Foo = bar? Foo = bar' öğesine yönlendirilir. Daha iyi seçenekler olsa da, $ $ 'ın kullanılması amaçlandığı gibi çalışmaktadır. – sapht

+1

Ekleniyor? request_uri sonra tekrarlanan sorgu dizesi sorunu önler. – tarkeshwar

+0

Sunucu_adresinden sonra eksik bir noktalı virgül var – alvin