Làm cách nào tôi có thể chuyển hướng mydomain.comvà bất kỳ tên miền phụ nào *.mydomain.comđể www.adifferentdomain.comsử dụng NGINX?
Làm cách nào tôi có thể chuyển hướng mydomain.comvà bất kỳ tên miền phụ nào *.mydomain.comđể www.adifferentdomain.comsử dụng NGINX?
Câu trả lời:
server_name hỗ trợ kết hợp hậu tố bằng cú pháp .mydomain.com:
server {
server_name .mydomain.com;
rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}
hoặc trên mọi phiên bản 0.9.1 trở lên:
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
listenmặc định cho cổng 80 khi không được chỉ định. Nó thực sự phức tạp hơn một chút so với nói chung; xem tài liệu cấu hình nginx để biết thêm chi tiết.
?đạt được ở cuối?
rewritevà là return 301 $scheme://www.adifferentdomain.com$request_uri;gì?
$request_uriđã có chuỗi truy vấn, nên không cần nối lại nó. Các return 301cú pháp là mới hơn, và không nên có sự khác biệt trong hành vi giữa hai phương pháp, nhưng khi tôi ban đầu đã trả lời câu hỏi này, nhiều bản phân phối không có phiên bản cần thiết, vì vậy tôi đã đi với cú pháp an toàn hơn.
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
http://wiki.nginx.org/HttpRewriteModule#return
và
Tại sao sử dụng mô-đun viết lại nếu bạn có thể làm return? Về mặt kỹ thuật, returnlà một phần của mô-đun viết lại như bạn có thể đọc ở đây nhưng đoạn mã này dễ đọc imho hơn.
server {
server_name .domain.com;
return 302 $scheme://forwarded-domain.com;
}
Bạn cũng có thể cung cấp cho nó một chuyển hướng 301.
return 302 $scheme://forwarded-domain.com$request_uri;
Điều đó sẽ hoạt động thông qua HTTPRewriteModule .
Ví dụ viết lại từ www.example.com đến example.com:
server {
server_name www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
}
server_name example.com www.example.com;.
Nếu bạn muốn chuyển hướng yêu cầu "domain1.com" sang "domain2.com", bạn có thể tạo một khối máy chủ trông như thế này:
server {
listen 80;
server_name domain1.com;
return 301 $scheme://domain2.com$request_uri;
}
listen 443;
Chuyển hướng tạm thời
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? redirect;
Chuyển hướng vĩnh viễn
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? permanent;
Trong tập tin cấu hình nginx cho trang web cụ thể:
server {
server_name www.example.com;
rewrite ^ http://www.RedictToThisDomain.com$request_uri? redirect;
}
Bạn chỉ có thể viết một điều kiện if bên trong khối máy chủ {}:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}