Cara mengalihkan domain A ke domain B hanya menggunakan A-Records dan CNAME records

46

Saya memiliki 2 domain yang dihosting dengan host yang berbeda. Saya perlu mengalihkan Domain A ke Domain B. Sayangnya saya tidak bisa melakukan 301 redirect dari Host A, tetapi hanya bisa memodifikasi / menambah entri DNS (A-Records dan CNAMEs) di Host A.

Tentunya dimungkinkan untuk mengalihkan www.DomainA.com ke www.DomainB.com hanya dengan menggunakan A-records dan CNAMEs?

Saat ini, entri DNS adalah:

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.

Saya ingin mengalihkan

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

Saya sudah mencoba saran dari pos lain ini tetapi tidak berhasil.

Bagaimana saya bisa mencapai ini hanya dengan A-Records dan CNAME? Terima kasih atas saran Anda.

Prembo.

Prembo
sumber
2
Redirect apa yang ingin Anda capai? DNS tidak mampu bertindak seperti pengalihan HTTP dengan cara apa pun - tidak mungkin mengubah host yang coba diakses oleh browser di DNS saja.
Shane Madden
Saya memahami bahwa pengalihan 301 adalah ideal, dan itulah yang akan kami lakukan dalam waktu dekat (sayangnya domain A macet dengan Host A selama 50 hari lagi, dan tidak dapat ditransfer karena periode penguncian. Dan host A won ' t membiarkan Anda melakukan pengalihan HTTP kecuali Anda membayar 'paket' tambahan). Jadi untuk saat ini, kami hanya mencoba mengalihkan lalu lintas apa pun dari domain A ke domain, sebelum kami memindahkan domain A ke Host B.
Prembo
1
DNS tidak dapat melakukan pengalihan. Satu- satunya hal yang dapat dilakukan DNS adalah alias (satu nama terlihat sama dengan yang lain, seperti salinan). Itu tidak sama dengan mengirim orang yang tiba di satu tempat ke tempat yang berbeda.
Chris S
Terima kasih telah menjelaskan perbedaan antara pengalihan HTTP dan resolusi / delegasi DNS. Saya mengerti sekarang.
Prembo

Jawaban:

38

Jadi Anda tidak melihat pengalihan seperti itu (seperti yang terjadi di tingkat aplikasi, yaitu di Apache / Nginx / di mana pun) melainkan pada resolusi DNS. Host tempat DomainA di-host tidak akan boleh dipukul, berdasarkan uraian Anda karena Anda ingin agar permintaan DNS diselesaikan ke IPs dari DomainB. Kecuali jika saya melewatkan sesuatu dalam permintaan Anda?

Seperti yang Shane tunjukkan, DNS tidak mampu mengalihkan HTTP - itu tugas aplikasi / server web. Anda bisa membuat DomainA dan DomainB memutuskan untuk IP yang sama pada DNS dan semua akan berfungsi. Tetapi jika Anda mencari untuk melakukan ini pada per URL / jalan per-jalan maka ini tidak mungkin - DNS tidak mampu itu - ini adalah DNS-> layanan IP sederhana, apa yang terjadi dengan URL sebenarnya adalah tugas server web.

Setelah komentar di bawah, apa yang akan saya lakukan adalah merujuk semua catatan DNS untuk DomainA ke IP yang sama dengan yang ditunjuk oleh DomainB - dengan cara ini Anda akan mendapatkan permintaan HTTP yang mengenai hostB dan kemudian hanya masalah sederhana:

  1. membuat host Virtual Berbasiskan Nama Apache tertentu - yang akan menyajikan file dari DocumentRoot-nya sendiri
  2. membuat redirect permanen di Apache seperti ini:

Ini akan menulis ulang apa pun yang datang ke DomainB ke DomainA yang dapat di-host di server yang sama atau di tempat lain. Saya menghargai bahwa opsi kedua mungkin merupakan overhead dan tidak perlu jika Anda dapat / diizinkan untuk membuat host Virtual Berbasis Nama pada apache.

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

Saya akan menggunakan 1. - arahkan semua catatan DNS DomainA ke IP yang sama dengan yang ditunjuk oleh DomainB dan buat VirtualHosts Berbasis Nama tertentu di Apache.

pilin
sumber
Ya Anda mengerti dengan benar - silakan lihat komentar saya di atas. Jadi, entri DNS apa yang akan membantu untuk mencapai tujuan itu? Tidak ada web hosting di Host A, hanya saja domainnya ada di sana. Dan kami ingin semua lalu lintas ke domain A menyelesaikan ke Domain B ... Terima kasih banyak atas waktu Anda.
Prembo
Apakah ini sama dengan menambahkan ServerAlias domain Bke host virtual yang ada domain A?
BadHorsie
9

Seperti yang telah dinyatakan orang lain, tidak mungkin untuk melakukan pengalihan HTTP dengan DNS saja. DNS dan HTTP bekerja bersama untuk mengalihkan pengguna dari satu halaman web ke halaman lainnya.

Anda dapat menggunakan DNS dengan sendirinya untuk membuat domain A menampilkan konten yang sama dengan domain B, tetapi browser web akan menampilkan domain A di URL. Anda harus sangat berhati-hati dengan ini karena cukup buruk dari perspektif SEO. Anda akan mendapat masalah karena "duplikat konten", dan mesin pencari akan menghukum Anda karenanya.

Cara yang benar (dari perspektif UX dan SEO) untuk membuat pekerjaan ini adalah dengan melakukan pengalihan HTTP dari Domain A ke Domain B.

Anda dapat secara manual mengkonfigurasi server web Anda (Apache, Nginx, IIS, dll.) Untuk melakukan pekerjaan ini untuk Anda jika Anda secara teknis mampu. Ada banyak sumber daya yang baik untuk membantu dengan itu di web.

Jika Anda tidak dapat atau tidak ingin mengendalikan infrastruktur, Anda dapat menggunakan layanan pengalihan URL untuk melakukan pekerjaan ini untuk Anda. Saya adalah pendiri salah satu yang disebut EasyRedir , tetapi tentu saja ada yang lain.

wgrrrr
sumber
5

Domain A harus memiliki alamat IP yang sama dengan di domain B. Tidak perlu untuk referensi ke B dalam definisi A. Browser web tidak "mengikuti" CNAME sebagai pengalihan, mereka akan menyimpan nama host yang sama dan menggunakan catatan CNAME sendiri untuk menyelesaikan ke alamat IP.

Jika Anda ingin B muncul di browser ketika A dikunjungi (opsional dan tidak terkait dengan DNS), Anda harus mencocokkan Host HTTP dan mengarahkan permintaan di server Web. dengan Apache, Anda akan menggunakan mod_rewrite untuk melakukannya seperti ini dalam definisi virtual host:

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

Tentu saja mungkin untuk mengarahkan ulang, dengan trik berikut:

  1. Buat zona primer standar baru
  2. Beri nama sama dengan URL fiktif yang ingin Anda alihkan
  3. Pastikan nama fiktif ini berbeda dari nama DNS AD mana pun
  4. Buat catatan dengan entri berikut:

kosong ....................... A ......................... ... ip-addr-2

www ......................... A ....................... ..... ip-addr-2

Apa yang kita miliki di sini adalah pengalihan, pada dasarnya. URL yang valid akan diselesaikan berdasarkan zona DNS primer DNS yang ada. URL fiktif akan dialihkan ke ip-addr-2. Yang penting adalah bahwa nama entri ini kosong, sehingga akan jatuh ke entri berikutnya dalam catatan dan redirect ke ip-addr-2

Bran Kop
sumber
-1

Saya belum mencobanya, tetapi saya pikir Anda bisa melakukan ini:

DomainA.com. CNAME DomainB.com.

Ini bukan semua catatan lain dalam file zona DomainA sama sekali. Tidak ada SOA, tidak ada.

Jangan coba ini di domain yang Anda pedulikan berfungsi.

wfaulk
sumber
Saya tidak percaya bahwa ini akan mengarahkan resolusi subdomain, meskipun Anda meninggalkan SOA. DNAME dirancang untuk melakukan ini, tetapi karena alasan tertentu tidak ada yang mengerti, CNAME dan DNAME saling eksklusif.
Falcon Momot
2
Anda tidak dapat menempatkan CNAMEcatatan pada domain telanjang / puncak seperti domain.com, tetapi Anda dapat pada subdomain sepertiwww.domain.com
Petrus Theron
Ini tidak akan mengalihkan , itu hanya akan menyelesaikan www.DomainA.com ke IP DomainB; dan itu hanya berfungsi untuk sub-domain (bukan telanjang domain0>
Wernight