2010-05-07 27 views
6

Tuy nhiên, một nginx viết lại quy tắc câu hỏi:nginx subdomain viết lại

Làm thế nào tôi có thể làm một viết lại http://www.*.domain.com-http://*.domain.com?

+0

câu hỏi tương tự: http://stackoverflow.com/questions/2498712/nginx-subdomain-rewrite –

Trả lời

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

trả lời từ lỗi server: https://serverfault.com/questions/139579/nginx-subdomain-rewrite

+5

Cách tiếp cận này không được khuyến cáo hiện nay. Xem [phần này về những cạm bẫy phổ biến] (http://wiki.nginx.org/Pitfalls#Using_If). –

+0

phương pháp được đề xuất là gì? – Tony

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

Lưu ý rằng điều này mang lại một chuỗi truy vấn kép, một yêu cầu cho '/? Foo = bar' sẽ chuyển hướng đến' /? Foo = bar? Foo = bar'. Sử dụng '$ uri' dường như hoạt động như dự định, mặc dù có thể có các tùy chọn tốt hơn. – sapht

+1

Thêm? sau $ request_uri sẽ tránh được vấn đề chuỗi truy vấn lặp lại. – tarkeshwar

+0

Có dấu chấm phẩy bị thiếu sau tên server_name – alvin

Các vấn đề liên quan