1

ドメインfoo.orgを登録すると、foo.bizが無料で提供されました。私はそれがあまり好きではありませんが、私が言ったように、彼らは私に無料で提供してくれました...そして、サブドメインを含め、 foo.biz を含むすべてのリクエストを foo.com に絶対にルーティングしたい思います

foo.orgの DNS 構成では、ホストの IP アドレスへのAレコードとして、 @www、およびワイルドカード サブドメイン*を設定しました。

foo.bizの DNS 構成については、301 リダイレクトを使用することを考えていましたが、ワイルドカード サブドメインではうまく機能しません。少なくとも、必要な自動マッピングを実現する方法がわかりません。つまり、それを行う必要はありません。サブドメインごとに手動で設定し、ワイルドカードなしでは使用しないでください。

私は本当にfoo.orgを正規の名前にし、foo.bizを安価なエイリアスとして使用したいので、CNAME レコードに頼るのは理にかなっていますが、マッピングを実現するにはどうすればよいでしょうか?

私はあなたの最も教育的なアドバイスをいただければ幸いです!

4

2 に答える 2

2

これは、DNS を使用するだけでは実現できません。*.foo.bizの CNAME レコードを foo.org に設定することはできますが、ユーザーがブラウザのアドレス バーにfoo.bizと入力したときに、ブラウザがfoo.orgを要求することはありません。これを実現するには、HTTP サーバー レベルでリダイレクトを使用する必要があります。

なんで?

明確にするために、stackoverflow.com の DNS 設定を見てみましょう。

~# dig www.stackoverflow.com
;; QUESTION SECTION:
;www.stackoverflow.com.         IN     A

;; ANSWER SECTION:
www.stackoverflow.com.   300    IN     CNAME   stackoverflow.com
stackoverflow.com.       24     IN     A       192.252.206.16

ご覧のとおり、stackoverflow.com は www.stackoverflow.com の正規名です。それでも、ブラウザのアドレス バーにwww.stackoverflow.comと入力すると、次のリクエストが 192.252.206.16 に送信されます。

GET / HTTP/1.1
Host: www.stackoverflow.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4

ここで興味深いのは、Chrome が StackOverflow の DNS 構成を調べて、stackoverflow.comがそのサーバーの正規名であることを確認した可能性があることですが、ヘッダー フィールドでwww.stackoverflow.comを送信したままです。Hostこれにより、管理者は 1 台の物理マシンで複数のサイトをホストできます (名前ベースの仮想ホスティング)。

ただし、192.252.206.16 のサーバーは私の要求に応答します。

HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Location: http://stackoverflow.com/
Date: Mon, 16 Sep 2013 11:00:43 GMT
Content-Length: 148

<head><title>Document Moved</title></head>
<body><h1>Object Moved</h1>This document may be found <a HREF="http://stackoverflow.com/">here</a></body>

したがって、私をstackoverflow.comにリダイレクトします。

HTTP サーバーの構成

マッピングを実現するには、HTTP サーバー構成にいくつかの書き換えルールを追加する必要があります。Apache の場合、これは次のようになります。

<VirtualHost *:80>
    ServerName foo.biz
    ServerAlias *.foo.biz

    RewriteEngine On

    RewriteCond %{HTTP_HOST} =foo.biz
    RewriteRule ^(.*)$ http://foo.org$1 [L,R=301]

    RewriteCond %{HTTP_HOST} ^(.*).foo.biz$
    RewriteRule ^(.*)$ http://%1.foo.org$1 [L,R=301]
</VirtualHost>

これにより、 foo.biz/bar が foo.org/bar anything.foo.biz / something がanything.foo.org/somethingに書き換えられます。ただし、foo.biz の DNS エントリと foo.org サイトのサイト構成は引き続き必要です。

それが役立つことを願っています...

于 2013-09-16T12:32:38.593 に答える