ฉันจะเปลี่ยนเส้นทางmydomain.comและโดเมนย่อย*.mydomain.comไปwww.adifferentdomain.comใช้ NGINX ได้อย่างไร
ฉันจะเปลี่ยนเส้นทางmydomain.comและโดเมนย่อย*.mydomain.comไปwww.adifferentdomain.comใช้ NGINX ได้อย่างไร
คำตอบ:
server_nameรองรับการจับคู่คำต่อท้ายโดยใช้ไวยากรณ์. mydomain.com:
server {
server_name .mydomain.com;
rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}
หรือในเวอร์ชัน 0.9.1 หรือสูงกว่า:
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
listenคำสั่งเริ่มต้นเป็นพอร์ต 80 เมื่อไม่ได้ระบุ จริงๆแล้วมันซับซ้อนกว่านั้นเล็กน้อย ดูเอกสารการกำหนดค่า nginxสำหรับรายละเอียดเพิ่มเติม
?สำเร็จในตอนท้ายคืออะไร?
rewriteและreturn 301 $scheme://www.adifferentdomain.com$request_uri;?
$request_uriมีสตริงคำค้นหาอยู่แล้วจึงไม่จำเป็นต้องต่อท้ายอีก return 301ไวยากรณ์ใหม่และควรจะมีความแตกต่างในการทำงานระหว่างสองวิธีไม่มี แต่เมื่อฉันเดิมตอบคำถามนี้กระจายมากไม่ได้มีรุ่นที่จำเป็นเพื่อให้ฉันไปกับไวยากรณ์ที่ปลอดภัย
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
http://wiki.nginx.org/HttpRewriteModule#return
และ
ทำไมต้องใช้โมดูลการเขียนซ้ำถ้าคุณทำได้return? ในทางเทคนิคแล้วreturnเป็นส่วนหนึ่งของโมดูลการเขียนซ้ำที่คุณสามารถอ่านได้ที่นี่แต่ตัวอย่างนี้อ่านง่ายกว่า imho
server {
server_name .domain.com;
return 302 $scheme://forwarded-domain.com;
}
คุณยังสามารถเปลี่ยนเส้นทาง 301 ได้
return 302 $scheme://forwarded-domain.com$request_uri;
server_name example.com www.example.com;คุณก็จะต้อง
หากคุณต้องการเปลี่ยนเส้นทางคำขอสำหรับ "domain1.com" ไปยัง "domain2.com" คุณสามารถสร้างบล็อกเซิร์ฟเวอร์ที่มีลักษณะดังนี้:
server {
listen 80;
server_name domain1.com;
return 301 $scheme://domain2.com$request_uri;
}
listen 443;
คุณสามารถเขียน if condition ภายในเซิร์ฟเวอร์ {} block:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}
เปลี่ยนเส้นทางชั่วคราว
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? redirect;
เปลี่ยนเส้นทางถาวร
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? permanent;
ในไฟล์คอนฟิกูเรชัน nginx สำหรับไซต์เฉพาะ:
server {
server_name www.example.com;
rewrite ^ http://www.RedictToThisDomain.com$request_uri? redirect;
}
ฉันใช้รหัสนี้สำหรับไซต์ของฉัน
server {
listen 80;
listen 443;
server_name .domain.com;
return 301 $scheme://newdomain.com$request_uri;
}