外部ドメインをサブドメインにポイントするにはどうすればよいですか?

外部ドメインをサブドメインにポイントするにはどうすればよいですか?

私はドメインを所有しておりexample.com、サブドメインが同じ名前のディレクトリを指すように Ubuntu Apache サーバーを設定しました。

<VirtualHost *:80>
    ServerAlias *.example.com
    VirtualDocumentRoot /var/www/html/%1
</VirtualHost>

したがって、subdomain.example.comを指摘しますexample.com/subdomain

ユーザーが自分のカスタムドメインを自分の選択したサブドメインに向けられるようにしたいのですが、どうすればこれを実現できるでしょうか。また、どのようなレコードが必要で、どのような操作を行う必要があるでしょうか。仮想ホスト?

以下のレコードを試しました:

  • sampledomain.exampleCNAME記録) - @-->sample.example.com
  • sampledomain.example (Aレコード) - @--> ( IPexample.com のアドレス)

wwwを削除するとともに、CNAME に を使用することも試しましたA record

sample.example.comは正常に を指しますexample.com/sample。ただし、sampledomain.example何らかの理由で はルート サイトのように動作します。

したがって、 にアクセスすると、 を指すのではなく、sampledomain.example/sampleのコンテンツが取得されます。example.com/samplesample.example.com

これをどう解決すればよいでしょうか? どのレコードが必要で、仮想ホストに対して何ができるでしょうか?

ユーザーがアクセスしたときに PHP 経由でカスタム ドメイン名を取得できるように CNAME レコードを使用しましたが、CNAME は必須ですか?

答え1

顧客のリクエストに応じて手動で実行することに問題がなければ、これは簡単です。必要なのは、ServerAlias sampledomain.comvhost 構成に追加して、Web サーバー構成をリロードすることだけです。

ただし、顧客が何らかの顧客管理インターフェイスでこれを自分で実行できるようにしたい場合、Web サーバー上の仮想ホストの動作方法により、これは簡単には実現できません。その理由は次のとおりです。

Web サーバーにマッピングされているDNS レコードがある場合 ( または に関係なくA) CNAMEsampledomain.comブラウザは HTTPHostヘッダーを に設定してサーバーの IP アドレスに要求を送信しますsampledomain.com。Web サーバーはこのヘッダーを使用して、どの仮想ホストがこれを処理するかを決定します。 がsampledomain.comvhost 名でもエイリアスでもない場合は、既に経験したように、要求はデフォルトの vhost によって応答されます。

これを可能にするには、顧客が仮想ホストのエイリアスを設定できる方法が必要です。Apacheではこれは簡単ではありませんが、理論的にはデータベースから読み取ることができます。ここ(私はこれを試したことがないので、これが機能するかどうかはわかりません)。

また、仮想最小値そのような場合に役立つかもしれません。

関連情報