วิธีเปลี่ยนเส้นทางโดเมน A ไปยังโดเมน B โดยใช้ระเบียน A-Records และ CNAME เท่านั้น


46

ฉันมี 2 โดเมนโฮสต์กับโฮสต์ที่แตกต่างกัน ฉันต้องเปลี่ยนเส้นทางโดเมน A ไปยังโดเมน B แต่ฉันไม่สามารถเปลี่ยนเส้นทาง 301 จากโฮสต์ A ได้ แต่สามารถแก้ไข / เพิ่มรายการ DNS (A-Records และ CNAME) ได้ที่ Host A

เป็นไปได้ไหมที่จะเปลี่ยนเส้นทาง www.DomainA.com ไปยัง www.DomainB.com โดยใช้ A-records และ CNAME เท่านั้น

ในปัจจุบันรายการ DNS คือ:

DomainA.com.    3600    IN    SOA       ns1.HostA.net.
www             3600    IN    CNAME     www.DomainB.com.    
DomainA.com.    3600    IN    NS        ns1.HostA.net.  
DomainA.com.    3600    IN    NS        ns2.HostA.net.  
DomainA.com.    3600    IN    NS        ns3.HostA.net.

ฉันต้องการเปลี่ยนเส้นทาง

DomainA.com -> DomainB.com
*.DomainA.com -> *.DomainB.com

ฉันได้ลองคำแนะนำจากโพสต์อื่นนี้แล้วแต่ไม่ได้ผล

ฉันจะทำสิ่งนี้ให้สำเร็จด้วย A-Records และ CNAMEs ได้อย่างไร? ขอบคุณสำหรับคำแนะนำ.

Prembo


2
คุณต้องการเปลี่ยนเส้นทางแบบไหน? DNS ไม่สามารถทำหน้าที่เหมือนกับการเปลี่ยนเส้นทาง HTTP ในทางใด ๆ - เป็นไปไม่ได้ที่จะเปลี่ยนโฮสต์ที่เบราว์เซอร์พยายามเข้าถึงใน DNS เพียงอย่างเดียว
เชนหัวเสีย

ฉันเข้าใจว่าการเปลี่ยนเส้นทาง 301 เป็นอุดมคติและนั่นคือสิ่งที่เราตั้งใจจะทำในอนาคตอันใกล้ (น่าเสียดายที่โดเมน A ติดอยู่กับ Host A อีก 50 วันและไม่สามารถถ่ายโอนได้เนื่องจากระยะเวลาล็อคและโฮสต์ A ชนะ ' อย่าให้คุณเปลี่ยนเส้นทาง HTTP เว้นแต่ว่าคุณจะจ่าย 'แพ็คเกจ' เพิ่มเติม ดังนั้นในขณะนี้เราแค่พยายามเปลี่ยนเส้นทางการรับส่งข้อมูลใด ๆ ในต่อไปจากโดเมน A ไปยังโดเมนก่อนที่เราจะย้ายโดเมน A ไปยัง Host B
Prembo

1
DNS ไม่สามารถเปลี่ยนเส้นทางได้ เพียงสิ่ง DNS สามารถทำได้คือนามแฝง (ชื่อหนึ่งมีลักษณะเช่นเดียวกับอื่นเช่นสำเนา) นั่นไม่ใช่สิ่งเดียวกันกับการส่งคนที่มาถึงสถานที่แห่งหนึ่งไปยังสถานที่อื่น
Chris S

ขอขอบคุณที่ชี้แจงความแตกต่างระหว่างการเปลี่ยนเส้นทาง HTTP และการแก้ปัญหา / การมอบหมาย DNS ฉันเข้าใจแล้ว.
Prembo

คำตอบ:


38

ดังนั้นคุณจึงไม่ได้ดูที่การเปลี่ยนเส้นทาง (เช่นที่เกิดขึ้นที่ระดับแอปเช่นใน Apache / Nginx / ที่ใดก็ได้) แต่ให้ใช้การแก้ไข DNS โฮสต์ที่ DomainA โฮสต์โฮสต์อยู่หรือไม่ควรถูกโจมตีตามคำอธิบายของคุณเนื่องจากคุณต้องการให้คำขอ DNS ได้รับการแก้ไขกับ IP ของ DomainB ถ้าฉันไม่มีอะไรในคำขอของคุณ

เชนชี้ให้เห็นว่า DNS ไม่สามารถเปลี่ยนเส้นทาง HTTP ได้ซึ่งเป็นหน้าที่ของแอปพลิเคชัน / เว็บเซิร์ฟเวอร์ คุณสามารถกำหนด DomainA และ DomainB ให้เป็น IP เดียวกันบน DNS และใช้งานได้ทุกอย่าง แต่ถ้าคุณต้องการทำสิ่งนี้ต่อ URL / ต่อเส้นทางสิ่งนี้เป็นไปไม่ได้ - DNS ไม่สามารถทำได้ - เป็นบริการ DNS-> IP อย่างง่ายสิ่งที่เกิดขึ้นกับ URL ที่แท้จริงคือหน้าที่ของเว็บเซิร์ฟเวอร์

หลังจากความคิดเห็นด้านล่างสิ่งที่ฉันจะทำคือการอ้างอิงระเบียน DNS ทั้งหมดสำหรับ DomainA กับ IP เดียวกันกับ DomainB ชี้ไป - ด้วยวิธีนี้คุณจะได้รับคำขอ HTTP กดปุ่ม hostB แล้วมันเป็นเรื่องง่ายของ:

  1. สร้าง Apache Name Baseed Virtual โฮสต์เฉพาะ - ซึ่งจะให้บริการไฟล์จาก DocumentRoot ของตัวเอง
  2. การสร้างการเปลี่ยนเส้นทางถาวรบน Apache เช่นนี้:

การดำเนินการนี้จะเขียนสิ่งใดก็ตามที่มาถึง DomainB to DomainA ซึ่งสามารถโฮสต์บนเซิร์ฟเวอร์เดียวกันหรือที่อื่น ฉันขอขอบคุณที่ตัวเลือกที่สองน่าจะเป็นค่าใช้จ่ายและไม่จำเป็นถ้าคุณสามารถ / ได้รับอนุญาตให้สร้างชื่อโฮสต์เสมือนบน apache

<VirtualHost *:80>
  ServerName DomainB
  Redirect permanent / http://DomainA/
</VirtualHost>

ฉันจะไปกับ 1. - ชี้ระเบียน DNS ทั้งหมดของ DomainA ไปที่ IP เดียวกันกับ DomainB กำลังชี้และสร้างชื่อจาก VirtualHosts บน Apache


ใช่คุณเข้าใจถูกต้อง - โปรดดูความคิดเห็นของฉันด้านบน ดังนั้นรายการ DNS ใดที่จะช่วยให้บรรลุวัตถุประสงค์นั้น ไม่มีเว็บโฮสติ้งที่ Host A เพียงมีโดเมนอยู่ในนั้น และเราต้องการทราฟฟิกทั้งหมดไปยังโดเมน A เพื่อแก้ไขโดเมน B ... ขอบคุณมากสำหรับเวลาของคุณ
Prembo

นี่เหมือนกับการเพิ่ม ServerAlias domain Bไปยังโฮสต์เสมือนที่มีอยู่domain Aใช่หรือไม่
BadHorsie

9

ตามที่คนอื่นระบุไว้คุณไม่สามารถทำการเปลี่ยนเส้นทาง HTTP กับ DNS เพียงอย่างเดียวได้ DNS และ HTTP ทำงานร่วมกันเพื่อเปลี่ยนเส้นทางผู้ใช้จากหน้าเว็บหนึ่งไปยังอีกหน้าหนึ่ง

คุณสามารถใช้ DNS ได้ด้วยตัวเองเพื่อให้โดเมน A แสดงเนื้อหาเดียวกันกับโดเมน B แต่เว็บเบราว์เซอร์จะแสดงโดเมน A ใน URL คุณต้องระวังให้มากเพราะมันค่อนข้างแย่จากมุมมองของ SEO คุณจะมีปัญหากับ "เนื้อหาที่ซ้ำกัน" และเครื่องมือค้นหาจะลงโทษคุณ

วิธีที่ถูกต้อง (จากมุมมอง UX และ SEO) ที่จะทำให้งานนี้คือการเปลี่ยนเส้นทาง HTTP จากโดเมน A ไปยังโดเมน B

คุณสามารถกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณด้วยตนเอง (Apache, Nginx, IIS และอื่น ๆ ) เพื่อทำงานนี้ให้คุณหากคุณสามารถใช้เทคนิคได้ มีแหล่งข้อมูลที่ดีมากมายที่จะช่วยในเรื่องนี้ในเว็บ

หากคุณไม่สามารถหรือไม่ต้องการควบคุมโครงสร้างพื้นฐานคุณสามารถใช้บริการเปลี่ยนเส้นทาง URL เพื่อทำงานนี้ให้คุณ ฉันเป็นผู้ก่อตั้งคนหนึ่งชื่อEasyRedirแต่ก็มีอีกหลายคน


5

โดเมน A จำเป็นต้องมีที่อยู่ IP เดียวกับในโดเมน B ไม่จำเป็นสำหรับการอ้างอิงถึง B ในข้อกำหนดของ A เว็บเบราว์เซอร์ไม่ "ติดตาม" CNAME เป็นการเปลี่ยนเส้นทางพวกเขาจะเก็บชื่อโฮสต์เดียวกันและใช้ระเบียนของ CNAME เพื่อแก้ไขที่อยู่ IP

หากคุณต้องการให้ B ปรากฏในเบราว์เซอร์เมื่อมีการเยี่ยมชม A (เป็นทางเลือกและไม่เกี่ยวข้องกับ DNS) คุณจะต้องจับคู่โฮสต์ HTTP และเปลี่ยนเส้นทางคำขอบนเว็บเซิร์ฟเวอร์ ด้วย Apache คุณจะใช้ mod_rewrite เพื่อทำสิ่งนี้ในการกำหนดโฮสต์เสมือน:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?domainB.com$
RewriteRule ^/(.*)$ http://www.domainA.com/$1 [R=301,L]

0

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

  1. สร้างโซนหลักมาตรฐานใหม่
  2. ตั้งชื่อให้เหมือนกับ URL สมมติที่คุณต้องการเปลี่ยนเส้นทาง
  3. ตรวจสอบให้แน่ใจว่าชื่อสมมตินี้แตกต่างจากชื่อ DNS โฆษณาใด ๆ
  4. สร้างบันทึกด้วยรายการต่อไปนี้:

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

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

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


-1

ฉันไม่ได้ลอง แต่ฉันคิดว่าคุณสามารถทำได้:

DomainA.com. CNAME DomainB.com.

นี่คือแทนที่จะเป็นระเบียนอื่น ๆ ในไฟล์โซน DomainA เลย ไม่มี SOA ไม่มีอะไรเลย

อย่าลองทำในโดเมนที่คุณสนใจเกี่ยวกับการทำงาน


ฉันไม่เชื่อว่านี่จะเปลี่ยนเส้นทางการแก้ปัญหาของโดเมนย่อยแม้ว่าคุณจะออกจาก SOA DNAME ได้รับการออกแบบมาเพื่อทำสิ่งนี้ แต่ด้วยเหตุผลบางอย่างที่ไม่มีใครเข้าใจ CNAME และ DNAME จึงเป็นสิทธิพิเศษร่วมกัน
Falcon Momot

2
คุณไม่สามารถวางCNAMEระเบียนในโดเมนเปล่า / ยอดdomain.comได้ แต่คุณสามารถใช้โดเมนย่อยเช่นwww.domain.com
Petrus Theron

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