Làm cách nào tôi có thể chuyển hướng mydomain.com
và bất kỳ tên miền phụ nào *.mydomain.com
để www.adifferentdomain.com
sử dụng NGINX?
Làm cách nào tôi có thể chuyển hướng mydomain.com
và bất kỳ tên miền phụ nào *.mydomain.com
để www.adifferentdomain.com
sử 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;
}
listen
mặ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?
rewrite
và 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 301
cú 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, return
là 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;
}
}