Cách chuyển hướng tên miền A sang miền B chỉ sử dụng bản ghi A-Records và CNAME


46

Tôi có 2 tên miền được lưu trữ với các máy chủ khác nhau. Tôi cần chuyển hướng Miền A sang Miền B. Thật không may, tôi không thể thực hiện chuyển hướng 301 từ Máy chủ A, nhưng chỉ có thể sửa đổi / thêm các mục DNS (Bản ghi A và CNAME) tại Máy chủ A.

Chắc chắn có thể chuyển hướng www.DomainA.com sang www.DomainB.com chỉ bằng các bản ghi A và CNAME?

Hiện tại, các mục DNS là:

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.

Tôi muốn chuyển hướng

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

Tôi đã thử đề xuất từ bài đăng khác này nhưng nó không hoạt động.

Làm cách nào tôi có thể đạt được điều này chỉ với A-Records và CNAME? Cảm ơn vì lời khuyên của bạn.

Prembo.


2
Những loại chuyển hướng bạn đang tìm kiếm để đạt được? DNS không có khả năng hoạt động như một chuyển hướng HTTP theo bất kỳ cách nào - không thể thay đổi máy chủ nào mà trình duyệt đang cố truy cập trong DNS.
Shane Madden

Tôi hiểu rằng chuyển hướng 301 là lý tưởng và đó là những gì chúng tôi dự định sẽ thực hiện trong tương lai gần (không may tên miền A bị kẹt với Máy chủ A trong 50 ngày nữa và không thể được chuyển do thời gian khóa. Và máy chủ A đã thắng ' t cho phép bạn thực hiện chuyển hướng HTTP trừ khi bạn trả tiền cho một 'gói' bổ sung). Vì vậy, hiện tại, chúng tôi chỉ cố gắng chuyển hướng bất kỳ lưu lượng truy cập nào từ tên miền A sang tên miền, trước khi chúng tôi chuyển tên miền A sang Máy chủ B.
Prembo

1
DNS không thể chuyển hướng. Điều duy nhất DNS có thể làm là bí danh (một tên trông giống như tên khác, giống như bản sao). Điều đó không giống với việc gửi những người đến một nơi đến một nơi khác.
Chris S

Cảm ơn bạn đã làm rõ sự khác biệt giữa chuyển hướng HTTP và phân giải / phân bổ DNS. Giờ thì tôi đã hiểu.
Prembo

Câu trả lời:


38

Vì vậy, bạn không nhìn vào chuyển hướng như vậy (như điều đó xảy ra ở cấp ứng dụng, tức là trên Apache / Nginx / bất cứ nơi nào) mà là về độ phân giải DNS. Máy chủ lưu trữ mà DomainA được lưu trữ sẽ hoặc không bao giờ bị tấn công, dựa trên mô tả của bạn khi bạn muốn các yêu cầu DNS được giải quyết thành IP của DomainB. Trừ khi tôi thiếu một cái gì đó trong yêu cầu của bạn?

Như Shane đã chỉ ra DNS không có khả năng chuyển hướng HTTP - đó là nhiệm vụ của ứng dụng / máy chủ web. Bạn có thể làm cho DomainA và DomainB phân giải thành cùng một IP trên DNS và tất cả đều hoạt động. Nhưng nếu bạn đang tìm cách thực hiện điều này trên mỗi URL / mỗi đường dẫn thì điều này là không thể - DNS không có khả năng đó - đó là một dịch vụ DNS-> IP đơn giản, những gì xảy ra với URL thực tế là nhiệm vụ của máy chủ web.

Sau bình luận bên dưới, những gì tôi cần làm là giới thiệu tất cả các bản ghi DNS cho DomainA cho cùng một IP khi DomainB được trỏ đến - theo cách này bạn sẽ nhận được yêu cầu HTTP đánh vào hostB và sau đó chỉ là vấn đề đơn giản:

  1. tạo một máy chủ ảo cơ sở tên Apache cơ bản - sẽ phục vụ các tệp từ DocumentRoot của chính nó
  2. tạo chuyển hướng vĩnh viễn trên Apache như thế này:

Điều này sẽ viết lại bất cứ điều gì đến DomainB thành DomainA có thể được lưu trữ trên cùng một máy chủ hoặc ở một nơi khác. Tôi đánh giá cao rằng tùy chọn thứ hai có thể là chi phí chung và không cần thiết nếu bạn có thể / được phép tạo máy chủ ảo dựa trên tên trên apache.

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

Tôi sẽ đi với 1. - trỏ tất cả các bản ghi DNS của DomainA vào cùng (các) IP vì DomainB đang trỏ và tạo các Virtualhost dựa trên tên cụ thể trên Apache.


Có bạn hiểu chính xác - xin vui lòng xem nhận xét của tôi ở trên. Vì vậy, những mục DNS nào sẽ giúp đạt được mục tiêu đó? Không có lưu trữ web tại Máy chủ A, chỉ có tên miền được tổ chức ở đó. Và chúng tôi muốn tất cả lưu lượng truy cập đến miền A để giải quyết sang Miền B ... Rất cám ơn thời gian của bạn.
Prembo

Đây có giống như việc thêm ServerAlias domain Bvào máy chủ ảo hiện tại domain Akhông?
BadHorsie

9

Như những người khác đã tuyên bố, không thể thực hiện chuyển hướng HTTP chỉ với DNS. DNS và HTTP phối hợp với nhau để chuyển hướng người dùng từ trang web này sang trang web khác.

Bạn có thể tự sử dụng DNS để tạo miền A hiển thị cùng nội dung với tên miền B, nhưng trình duyệt web sẽ hiển thị tên miền A trong URL. Bạn cần phải rất cẩn thận với điều này vì nó khá tệ từ góc độ SEO. Bạn sẽ gặp rắc rối vì "nội dung trùng lặp" và các công cụ tìm kiếm sẽ trừng phạt bạn vì nội dung đó.

Cách chính xác (từ góc độ UX và SEO) để thực hiện công việc này là thực hiện chuyển hướng HTTP từ Miền A sang Miền B.

Bạn có thể tự cấu hình các máy chủ web của mình (Apache, Nginx, IIS, v.v.) để thực hiện công việc này cho bạn nếu bạn có khả năng về mặt kỹ thuật. Có rất nhiều tài nguyên tốt để trợ giúp điều đó trên web.

Nếu bạn không thể hoặc không muốn kiểm soát cơ sở hạ tầng, bạn có thể sử dụng dịch vụ chuyển hướng URL để thực hiện công việc này cho bạn. Tôi là người sáng lập ra một thứ gọi là EasyRedir , nhưng chắc chắn có những người khác.


5

Tên miền A cần có cùng địa chỉ IP như trong miền B. Không cần bất kỳ tham chiếu nào đến B trong định nghĩa của A. Các trình duyệt web không "theo dõi" các CNAME dưới dạng chuyển hướng, chúng sẽ giữ cùng tên máy chủ và sử dụng bản ghi riêng của CNAME để phân giải thành địa chỉ IP.

Nếu bạn muốn B xuất hiện trong trình duyệt khi A được truy cập (tùy chọn và không liên quan đến DNS), bạn cần khớp với Máy chủ HTTP và chuyển hướng các yêu cầu trên máy chủ Web. với Apache, bạn sẽ sử dụng mod_rewrite để làm như thế này trong định nghĩa máy chủ ảo:

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

0

Tất nhiên có thể chuyển hướng, với thủ thuật sau:

  1. Tạo một vùng chính tiêu chuẩn mới
  2. Đặt tên giống như URL hư cấu mà bạn muốn chuyển hướng đến
  3. Đảm bảo rằng tên giả tưởng này khác với bất kỳ tên DNS AD nào
  4. Tạo một bản ghi với các mục sau:

trống ....................... A ......................... ... ip-addr-2

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

Những gì chúng ta có ở đây là chuyển hướng, về cơ bản. Một URL hợp lệ sẽ phân giải dựa trên vùng DNS chính DNS hiện có. Một URL giả tưởng sẽ được chuyển hướng đến ip-addr-2. Điều quan trọng là tên của mục này trống, vì vậy nó sẽ rơi xuống mục tiếp theo trong bản ghi và chuyển hướng đến ip-addr-2


-1

Tôi đã không thử nó, nhưng tôi nghĩ bạn có thể làm điều này:

DomainA.com. CNAME DomainB.com.

Đây là thay vì bất kỳ bản ghi nào khác trong tệp Vùng DomainA. Không có SOA, không có gì.

Đừng thử điều này trên một miền mà bạn quan tâm để làm việc.


Tôi không tin rằng điều này sẽ chuyển hướng độ phân giải của các tên miền phụ, mặc dù bạn đã rời khỏi SOA. DNAME được thiết kế để làm điều này, nhưng vì một số lý do không ai hiểu, CNAME và DNAME là loại trừ lẫn nhau.
Falcon Momot

2
Bạn không thể đặt CNAMEcác bản ghi trên các tên miền trần / apex như domain.com, nhưng bạn có thể trên các tên miền phụ nhưwww.domain.com
Petrus Theron

Điều này sẽ không chuyển hướng , nó sẽ chỉ giải quyết www.DomainA.com đến IP của DomainB; và nó chỉ hoạt động cho các tên miền phụ (không phải tên miền trần truồng0>
Wernight
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.