web-dev-qa-db-ja.com

AレコードとCNAMEレコードのみを使用してドメインAをドメインBにリダイレクトする方法

異なるホストでホストされている2つのドメインがあります。ドメインAをドメインBにリダイレクトする必要があります。残念ながら、ホストAから301リダイレクトを行うことはできませんが、変更/追加できるのはホストAのDNSエントリ(AレコードとCNAME)だけです。

確かに、AレコードとCNAMEのみを使用してwww.DomainA.comをwww.DomainB.comにリダイレクトすることは可能ですか?

現在、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レコードとCNAMEでのみこれを実現するにはどうすればよいですか?アドバイスありがとうございます。

Prembo。

52
Prembo

そのため、リダイレクト(アプリケーションレベル、つまりApache/Nginx/whereverで発生する)自体ではなく、DNS解決について考えています。 DomainAがホストされているホストは、DNS要求をDomainBのIPに解決する必要があるため、説明に基づいてヒットするか、ヒットするべきではありません。あなたのリクエストに何か欠けているのでない限り?

Shaneが指摘したように、DNSはHTTPリダイレクションに対応していません-これはアプリケーション/ウェブサーバーの義務です。 DomainAとDomainBをDNS上の同じIPに解決でき、すべてが機能します。しかし、これをURLごとまたはパスごとの方法で行う場合、これは不可能です。DNSはそれができません。これは単純なDNS-> IPサービスであり、実際のURLで発生しているのはWebサーバーのタスクです。

以下のコメントの後、私がやろうとしていることは、DomainAのすべてのDNSレコードをDomainBが指しているのと同じIPに参照することです。このようにすると、HTTPリクエストがhostBにヒットし、次のようになります。

  1. 特定のApache名ベースの仮想ホストの作成-独自のDocumentRootからファイルを提供します
  2. 次のようにApacheに永続的なリダイレクトを作成します。

これにより、DomainBに送信されるものはすべて、同じサーバーまたは別の場所でホストできるDomainAに書き換えられます。 2番目のオプションはおそらくオーバーヘッドであり、Apacheで名前ベースの仮想ホストを作成できる/許可されている場合は不要であることを理解しています。

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

私は1で行きます-DomainAのすべてのDNSレコードがDomainBが指しているのと同じIPを指すようにし、Apacheで特定の名前ベースの仮想ホストを作成します。

41
milosgajdos

他の人が述べたように、DNSだけでHTTPリダイレクションを実行することはできません。 DNSとHTTPは連携して、ユーザーをあるWebページから別のWebページにリダイレクトします。

DNSを単独で使用して、ドメインAにドメインBと同じコンテンツを表示させることができますが、WebブラウザーはURLにドメインAを表示します。これはSEOの観点からはかなり悪いので、これには非常に注意する必要があります。あなたは「重複したコンテンツ」でトラブルに巻き込まれるでしょう、そして検索エンジンはそれを罰します。

これを正しく行う(UXおよびSEOの観点から)方法は、ドメインAからドメインBへのHTTPリダイレクトを実行することです。

技術的に可能であれば、Webサーバー(Apache、Nginx、IISなど)を手動で構成して、この作業を行うことができます。ウェブ上でそれを助けるための良いリソースがたくさんあります。

インフラストラクチャを制御できない、または制御したくない場合は、URLリダイレクトサービスを使用してこのジョブを実行できます。私は EasyRedir という名前の創設者ですが、他にも確かにあります。

9
wgrrrr

ドメインAは、ドメインBと同じIPアドレスを持つ必要があります。Aの定義では、Bを参照する必要はありません。 WebブラウザーはリダイレクトとしてCNAMEを「追跡」しません。同じホスト名を保持し、CNAMEの独自のレコードを使用してIPアドレスに解決します。

AにアクセスしたときにBをブラウザに表示したい場合(オプションでDNSとは無関係)、HTTPホストを照合し、Webサーバー上の要求をリダイレクトする必要があります。 Apacheでは、mod_rewriteを使用して、仮想ホスト定義で次のようにします。

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

もちろん、次のトリックでリダイレクトすることは可能です:

  1. 新しい標準プライマリゾーンを作成する
  2. リダイレクト先の架空のURLと同じ名前を付けます
  3. この架空の名前がどのAD DNS名とも異なることを確認してください
  4. 次のエントリでAレコードを作成します。

空白....................... A ......................... ... ip-addr-2

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

ここにあるのは、本質的にリダイレクトです。有効なURLは、既存のDNSプライマリDNSゾーンに基づいて解決されます。架空のURLはip-addr-2にリダイレクトされます。重要なのは、このエントリの名前が空白であるため、レコードの次のエントリに分類され、ip-addr-2にリダイレクトされることです。

0
Bran Kop