การใช้ DNS เพื่อเปลี่ยนเส้นทางไปยัง URL อื่นที่มีเส้นทาง [ปิด]


120

ฉันกำลังพยายามเปลี่ยนเส้นทางโดเมนไปยังโดเมนอื่นผ่าน DNS

ฉันรู้ว่าการใช้ใน CNAME นั้นเป็นไปได้

www.proof.com IN CNAME www.proof-two.com.

สิ่งที่ฉันต้องการคือการเปลี่ยนเส้นทางด้วยเส้นทาง เมื่อมีคนพิมพ์www.proof.comควรพาพวกเขาไปที่www.proof-two.com/path/index.htm

ฉันรู้ว่าสามารถทำได้โดยใช้สิ่งอำนวยความสะดวกของเว็บเซิร์ฟเวอร์ แต่ฉันต้องการการเปลี่ยนเส้นทาง DNS

เป็นไปได้หรือไม่


หากคุณใช้โดเมน Google คุณสามารถใช้ "Domain forward" ได้ที่เมนูด้านซ้าย -> เว็บไซต์
John_J

คำตอบ:


136

ไม่สิ่งที่คุณถามเป็นไปไม่ได้ DNS คือระบบแก้ไขชื่อและไม่รู้อะไรเลยเกี่ยวกับ HTTP


93

หากคุณใช้ AWS การเปลี่ยนเส้นทางเช่น

mail.foo.com --> mail.google.com/a/foo.com

สามารถตั้งค่าได้ดังนี้:

  1. ใน s3 สร้างที่เก็บข้อมูลว่าง "mail.foo.com"
  2. ใน Properties -> Static Website Hosting ให้ตั้งค่า "redirect all request to: mail.google.com/a/foo.com"
  3. ใน route53 สร้างระเบียน A "mail.foo.com"
  4. เปิดใช้งาน "นามแฝง" และกำหนดเป้าหมายนามแฝงเป็นที่เก็บข้อมูล "mail.foo.com"

ไม่ใช่โซลูชัน DNS ที่บริสุทธิ์ แต่ใช้งานได้;)

แต่โปรดทราบว่าการเปลี่ยนเส้นทางจะข้ามพารามิเตอร์ URL ทั้งหมดเช่น ... ? param1 = value1 & param2 = value2


3
นี่เป็นคำตอบที่ยอดเยี่ยมและมีประโยชน์มากสำหรับทุกคนที่ใช้ AWS ขอบคุณ! วิธีแก้ปัญหาที่น่ารัก
Ken

6
สิ่งสำคัญที่ควรทราบ: ต้องตั้งชื่อที่เก็บข้อมูลให้ตรงกับชื่อโฮสต์ที่เปลี่ยนเส้นทางไป ดูserverfault.com/a/584714/105720
Jordan Feldstein

1
สิ่งนี้ทำงานเป็นการเปลี่ยนเส้นทางไปยังไดเร็กทอรี แต่ไม่ใช่หน้าที่เฉพาะเจาะจง หากคุณเปลี่ยนเส้นทางคำขอทั้งหมดไปที่ "www.example.com/foo/bar/baz.html" AWS จะ "ช่วย" ต่อท้าย "/" URL โดยเปลี่ยนเป็น "www.example.com/foo/bar/baz .html / "และส่งคืนข้อผิดพลาด 404
Earl Ruby

34

ฉันรู้ว่านี่เป็นกระทู้เก่า แต่ FWIW ในกรณีที่มีคนอื่นกำลังมองหาวิธีการทำเช่นนี้

แม้ว่า DNS จะไม่เข้าใจส่วนพา ธ ของ url แต่ก็จะเข้าใจโดเมนย่อยดังนั้นแทนที่จะเป็น:

www.proof.com ใน CNAME www.proof-two.com/path/index.htm

คุณสามารถใช้:

www.proof.com ใน CNAME proof.proof-two.com

จากนั้นไปที่ใดก็ตามที่คุณโฮสต์ proof-two.com และตั้งค่าให้ชี้ proof.proof-two.com ไปที่ www.proof-two.com/path/index.htm

~ มีมากกว่าหนึ่งวิธีในการถลกหนังแมว


2
สิ่งนี้ฟังดูเหมือนเป็นการก่อสร้างที่ไร้ประโยชน์แทนที่จะทำให้ proof.proof-two.com ชี้ไปที่ www.proof-two.com/path/index.htm คุณอาจทำให้ www.roof.com ชี้ไปที่นั่นได้เช่นกันโดยไม่จำเป็นต้อง ระเบียน DNS เพิ่มเติม
Michiel

12
@Michiel ดูเหมือนเป็นการก่อสร้างที่ไร้ประโยชน์หากคุณสามารถเข้าถึงproof-two.comเว็บเซิร์ฟเวอร์ได้อย่างง่ายดาย บางครั้ง บริษัท ใหญ่ ๆ (และระบบราชการ) ทำให้ทุกอย่างซับซ้อนกว่าที่ควรจะเป็น
cregox

1
"แล้วไปที่ทุกที่ที่คุณโฮสต์ proof-two.com และตั้งค่าให้ชี้ proof.proof-two.com ไปที่ www.proof-two.com/path/index.htm" จะทำอย่างไร?
user2060451

17

ฉันมีโครงการส่วนตัวที่อาจช่วยคุณในการแก้ปัญหานี้ เป็นโซลูชันการเปลี่ยนเส้นทางแบบโอเพนซอร์สที่ช่วยให้คุณสามารถเปลี่ยนเส้นทางโดเมนของคุณได้เพียงแค่เปลี่ยนการตั้งค่า DNS ของคุณ ลิงค์ของโครงการ: https://redirect.center/ .

หากต้องการเปลี่ยนเส้นทาง www.proof.com ไปยัง www.proof-two.com โดยเก็บพารามิเตอร์ URL ไว้เพียงตั้งค่ารายการ www DNS ของคุณบน proof.com:

www.proof.com ใน CNAME www.proof-two.com.opts-uri.redirect.center


คำถามเกี่ยวกับการเปลี่ยนเส้นทางไปยัง URL เส้นทางแบบเต็มไม่ใช่แค่โดเมน
Tony Chiboucas

2
นั่นยังไม่ใช่เส้นทางที่สมบูรณ์
Tony Chiboucas

2
สามารถรองรับเส้นทางผ่าน ".opts-slash" ของบริการ ฟังก์ชัน เปลี่ยนเส้นทางjobs.my-domain.comไปที่my-domain.com/jobs กำหนดค่า DNS Zone ของคุณดังนี้: Host Record: jobs Type: CNAME To: www.my-domain.com.opts-slash.jobs.redirect.center
David Turner

1
นี่เป็นเรื่องที่ยอดเยี่ยมและเรียบง่ายหากผู้รับจดทะเบียนของคุณไม่ให้การเปลี่ยนเส้นทาง - ยอดเยี่ยมมาก!
Luca Steeb

1
ลงตัวนี้! ฉันคิดว่ามีบางอย่างเช่นนี้ แต่ไม่พบ (พวกเขาต้องทำงานกับ SEO ฉันเดา)
Matt Dodge

11

จริงๆมันง่ายมากด้วยredirect.center

หากคุณต้องการสร้าง CNAME เป็น:

www.proof.com ใน CNAME www.proof-two.com/path/index.htm

โดยใช้ redirect.center CNAME ของคุณจะมีลักษณะเป็นโหมด Canonical ดังนี้:

www.proof.com ใน CNAME www.proof-two.com.opts-slash.path.opts-slash.index.htm.redirect.center

ตอนนี้หากคุณต้องการเปลี่ยนเส้นทางไปยังเว็บไซต์ https คุณสามารถเพิ่มตัวเลือกนี้:

www.proof.com ใน CNAME www.proof-two.com.opts-slash.path.opts-slash.index.htm.opts-https.redirect.center

ตอนนี้คุณสามารถสร้าง CNAME ด้วยโหมดบัญญัติพร้อมเครื่องหมายทับในหน้าโชคชะตาของคุณ


ฉันพยายามแล้ว แต่มันไม่ได้ผล เพียงแค่เปลี่ยนเส้นทางผู้ใช้ไปยังไซต์ของ redirect.center
Renan

คุณสามารถคัดลอกทะเบียน CNAME ของคุณได้หรือไม่ คุณสามารถคัดลอกไซต์ที่กำหนดค่าใหม่ได้ด้วยหรือไม่?
Alvaro Aguilar

1
@Renan ตรวจสอบให้แน่ใจว่าโดเมนต้นทางมีอยู่ใน DNS และสามารถค้นหาได้โดยเซิร์ฟเวอร์ redirect.center นอกจากนี้การนำทางไปยัง target-domain.com.redirect.center ในเบราว์เซอร์จะไม่ทำงาน ดูคำอธิบาย: github.com/udleinati/redirect.center/issues/…
redfish

11

แก้ไข

ดูเหมือนว่าเป็นผู้ให้บริการของฉัน (OVH) ที่อนุญาตให้มีการเปลี่ยนเส้นทางแบบนั้นภายในโครงสร้างพื้นฐาน

ดู: https://docs.ovh.com/gb/en/domains/redirect-domain-name/

ฉันกำลังเก็บคำตอบด้านล่างนี้เพื่อประโยชน์ในการเก็บถาวร แต่ก็ไม่ได้ให้ข้อมูลที่มีความหมายใด ๆ

คำตอบเดิม

ฉันทำโดยใช้ระเบียน TXT

เมื่อต้องการเปลี่ยนเส้นทางfoo.bar.comไปfoo2.bar.com/pathเพียงแค่เพิ่มfoo IN TXT "1|foo2.bar.com/path"ของคุณในbar.comโซน DNS

นอกจากนี้ยังเก็บเส้นทาง url และพารามิเตอร์ ดังนั้นถ้าคุณพยายามที่จะเข้าถึงคุณจะถูกเปลี่ยนเส้นทางไปยังfoo.bar.com/hello?foo=barfoo2.bar.com/path/hello?foo=bar


6
คุณช่วยเพิ่มอีกนิดได้ไหม คุณมีข้อมูลอ้างอิงเกี่ยวกับวิธีใช้ระเบียน TXT หรือไม่?
Josiah

สิ่งนี้จะเก็บพารามิเตอร์ url ไว้ด้วยหรือไม่
andreas

1
หลังจากการสอบสวนดูเหมือนว่า OVH จะทำเพื่อฉัน ดู: ovh.com/fr/g1339.redirection-nom-de-domaine (fr) ฉันจะอัปเดตคำตอบของฉัน
Gabriel

10

เพื่อตอบคำถามเดิมไม่สิ่งที่คุณต้องการไม่สามารถทำได้โดยใช้ DNS เพียงอย่างเดียว (เหมือนที่ทุกคนระบุไว้) นอกเหนือจากทุกสิ่งที่กล่าวมาแล้วตัวเลือกอื่นคือการใช้บริการเปลี่ยนเส้นทาง URL บริการประเภทนี้ช่วยให้คุณกำหนดค่าการเปลี่ยนเส้นทาง URL ประเภทต่างๆได้ตามความต้องการของคุณ ตัวอย่างเช่น:

  1. ส่งต่อโดเมนเอเพ็กซ์ไปยัง www. โดเมนย่อยหรือในทางกลับกัน
  2. ส่งต่อชุดชื่อโดเมนไปยังปลายทางเดียว (มีประโยชน์สำหรับการส่งต่อการสะกดผิดโดเมนชื่อ บริษัท เก่า ฯลฯ )
  3. ส่งต่อชื่อโดเมนเฉพาะไปยังหน้าที่เชื่อมโยงอย่างลึกซึ้ง (เช่นสิ่งที่ OP ต้องการ)

มีบริการที่ไม่นี้เป็นEasyRedir การเปิดเผยข้อมูลทั้งหมด: ฉันพัฒนา EasyRedir มีตัวเลือกอื่น ๆ อยู่ที่นั่นดังนั้นฉันขอแนะนำให้คุณดูรอบ ๆ


5

DNS จะไม่เปลี่ยนเส้นทางส่วนเส้นทางของ URL ดังนั้นจึงเป็นไปไม่ได้

เพิ่ม

www.proof.com IN CNAME www.proof-two.com

จะเข้าถึง www.proof.com ไปยัง www.proof-two.com โดยตรงซึ่งคุณจะต้องใช้การกำหนดค่าเว็บเซิร์ฟเวอร์เพื่อนำผู้ใช้ไปยังหน้าที่เหมาะสม


4

วิธีแก้ปัญหานี้ของฉันค่อนข้างง่ายและตรงไปตรงมา สิ่งที่คุณต้องมีคือเซิร์ฟเวอร์ IIS ที่ทำงานภายในโดเมน

ตั้งค่า CNAME ใน DNS เพื่อชี้ไปที่เซิร์ฟเวอร์ IIS โดยใช้ชื่อโฮสต์ใน IIS เพื่อแก้ไขหลายไซต์บนเซิร์ฟเวอร์ IIS เดียว ฉันใช้เซิร์ฟเวอร์ IIS เดียวกันเพื่อสร้างโดเมนย่อยบางโดเมนไปยังไซต์ภายนอก

จากนั้นในการเปลี่ยนเส้นทางการตั้งค่าการตั้งค่า IIS สำหรับไซต์นั้นเพื่อไปยังไซต์ / เส้นทางนอกสถานที่ของคุณในกรณีของฉันมันเป็นแคตตาล็อกโฮสต์ของเราที่ฉันต้องการให้ catalog.ourdomain.com ไป จากที่นี่การปรับแต่งทั้งหมดจะเสร็จสิ้นใน IIS อย่าลืมเปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุตัวตนเพื่อไม่ให้มีการปิดกั้นการรับส่งข้อมูล


3

ฉันจะสมมติว่าคุณมีสถานการณ์นี้: คุณมีเว็บเซิร์ฟเวอร์ที่ไม่ซ้ำกันซึ่งโฮสต์เว็บไซต์ต่างๆแต่ละเว็บไซต์ควรจะนำเสนอโดยโดเมนที่แยกจากกัน:

ดังนั้น page1.html ควรให้บริการโดยwww.customer1.comเป็นต้น

  1. สร้างโดเมนย่อยภายในเซิร์ฟเวอร์ dns example.com (เว็บเซิร์ฟเวอร์ของคุณ):

    customer1.example.com

  2. ในการตั้งค่าเซิร์ฟเวอร์เสมือน apache ของคุณแมปโดเมนย่อยกับไดเร็กทอรีที่มีเว็บไซต์สำหรับลูกค้าของคุณ # 1 ดังนี้:

<VirtualHost *:80> SetEnv PAGE_ID "customer1" ServerName customer1.example.com ServerAlias www.customer1.com DocumentRoot /your/local/path/webserver/customer1 </VirtualHost> โปรดสังเกตค่าของ "ServerAlias" ซึ่งเป็นสิ่งสำคัญสำหรับขั้นตอนต่อไป -

ณ จุดนี้คุณควรจะสามารถไปที่เว็บไซต์ customer1 ของคุณได้โดยไปที่:

customer1.example.com

  1. ในการตั้งค่า DNS สำหรับ customer1.com คุณต้องสร้างระเบียน CNAME:

    CNAME = www LOCATION = customer1.example.com

ตอนนี้คุณเปิดใช้งานแล้ว: www.customer1.com


3

งานที่เกี่ยวข้องสรุปทั้งหมดด้านล่าง:

ปัญหา:

http://a.com/p1/p2.html ควรไปที่ http://B.com/p1/p2.html
วันนี้ แต่ในภายหลังเมื่อกำหนดค่าด้วยตนเอง / อัตโนมัติจะเหมือนกัน
http://a.com/p1 /p2.html ควรไปที่ http://C.com/p1/p2.html

คำตอบ:

DNS - แปลงชื่อเป็นที่อยู่ IP

แม้ว่าจะสามารถเปลี่ยนเส้นทางได้มาก แต่ผลลัพธ์คือที่อยู่ IP เสมอ DNS ไม่เข้าใจเส้นทางหรือส่วนโปรโตคอลของ URL เข้าใจเฉพาะส่วนของโดเมนนั่นคือ a.com เท่านั้นถูกแปลงเป็นที่อยู่ IP ดังนั้นเมื่อคุณกดhttp: //a.com/p1/p2.htmlอาจถูกแปลงเป็นhttp://152.132.121.11/p1/p2.html หากคุณกำหนดค่า DNS ผิดคุณจะได้รับ 152.132.121.11 (ไม่ใช่http: //152.132 121.11 / p1 / p2.html ) ดังนั้นคุณจะได้รับข้อผิดพลาด 400s (400, 403 ฯลฯ )

การเปลี่ยนเส้นทาง - นี่คือhttp://a.com/p1/p2.htmlสามารถแปลงเป็นhttp://b.com/p1/p2.html

วิธีการทั้งหมดเช่น GET, POST สามารถทำงานได้หากส่วนหัวและเนื้อหาใด ๆ แต่มีเว็บเซิร์ฟเวอร์เกี่ยวข้องอยู่อาจเป็นจุดล้มเหลวดังนั้นความสามารถในการปรับขนาดและความพร้อมใช้งานจึงเป็นกุญแจสำคัญ

หากคุณอยู่บนAWSเส้นทาง 53 -> API เกตเวย์เป็นไปได้แม้ว่าจะเป็นโดเมนที่กำหนดเองโดยใช้ Cloud front

เป็นไปได้ด้วย Amazon Certification Manager โดเมนที่กำหนดเองของ AWS Gateway และ Route53 โปรดสังเกตข้อ จำกัด us-east-1 ใน ACM

หวังว่าจะช่วยใครบางคน


2

ในขณะที่เกือบทุกคนระบุไว้แล้ว - เป็นไปไม่ได้ที่จะใช้ DNS เพียงอย่างเดียว เพื่อเป็นการแก้ปัญหาฉันขอแนะนำให้ลองใช้ NGINX ( http://nginx.org/en/docs/http/request_processing.html )

TL; DR - ใน NGINX คุณสามารถสร้างเซิร์ฟเวอร์เสมือนหลายเครื่องที่สามารถเปลี่ยนเส้นทางคำขอของคุณตามชื่อเซิร์ฟเวอร์

อดีต http://first.my-server.comเปลี่ยนเส้นทางไปยังตำแหน่ง A และhttp://second.my-server.comเปลี่ยนเส้นทางไปยังตำแหน่ง B ในขณะที่ทั้งสองแชร์เซิร์ฟเวอร์จริงเพียงเครื่องเดียว


0

คุณสามารถใช้ htaccess rewrite mod เขียนใหม่ไปยังโฟลเดอร์ย่อยหากผู้ใช้ขอโดเมนเฉพาะหนึ่งโดเมนไม่ใช่โดเมนอื่น


-1

แน่นอนว่าสามารถเปลี่ยนเส้นทางได้ด้วยเคล็ดลับต่อไปนี้:

สร้างโซนหลักมาตรฐานใหม่ตั้งชื่อให้เหมือนกับ URL สมมติที่คุณต้องการเปลี่ยนเส้นทางเพื่อตรวจสอบให้แน่ใจว่าชื่อสมมตินี้แตกต่างจากชื่อ AD DNS ใด ๆ สร้างระเบียนด้วยรายการต่อไปนี้:

ว่างเปล่า ....................... ......................... ... IP-addr-2

www ......................... ....................... ..... IP-addr-2

สิ่งที่เรามีอยู่ที่นี่คือการเปลี่ยนเส้นทางโดยพื้นฐานแล้ว URL ที่ถูกต้องจะแก้ไขตามโซน DNS หลักของ DNS ที่มีอยู่ URL สมมติจะถูกเปลี่ยนเส้นทางไปยัง ip-addr-2 สิ่งสำคัญคือชื่อของรายการนี้ว่างเปล่าดังนั้นมันจะตกลงไปที่รายการถัดไปในบันทึกและเปลี่ยนเส้นทางไปยัง ip-addr-2


-4

ทุกคนได้ระบุไว้แล้วและฉันต้องการให้คุณเป็นอีกทางเลือกหนึ่งในบริการที่สามารถช่วยคุณได้ www.301redirect.itเป็นบริการฟรีที่สามารถเปลี่ยนเส้นทางโดเมนของคุณ (พร้อมสัญลักษณ์แทน) ไปยัง URL ปลายทางใดก็ได้

ฉันต้องการเพิ่มการเปิดเผยข้อมูลด้วย: ฉันเป็นผู้พัฒนาที่อยู่เบื้องหลังบริการนี้และมีตัวเลือกอื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.