ฉันจะเปลี่ยนเส้นทาง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;
}