3

人々がコンテンツを公開できるようにする ASP.NET MVC Web アプリに取り組んでいますが、コンテンツをリモート サーバーに公開する以外に、人々が自分のドメイン名を直接使用できるようにしたいと考えています。たとえば、ユーザー「Tom」は、自分のドメイン名 TomSite.com がhttp://www.mywebapp.com/user/tomを指すようにすることができますが、サブパスもマップされます。たとえば、TomSite.com/path は www.mywebapp.com/user/tom/path にマップされ、これは Web 訪問者に対して透過的です。訪問者は、TomSite.com のどこにも「mywebapp.com」を表示しません。

Smugmug.com はそのようなサービスを提供していると思います。人々が自分のドメイン名を写真ポートフォリオに使用できるようにするためです。私は同じ結果を達成したい。

これどうやってするの?ありがとう!

4

4 に答える 4

2

これには複数の手順が必要です。

まず、サイトの CNAME レコードを持つようにユーザーがドメインを構成する方法を確認する必要があります。これはさまざまな方法でアーカイブできますが、教育が最も優れています。ホスティング プロバイダーとパートナーシップを結ぶには、大量のボリュームが必要です。

IIS では、各ホスト名を手動で追加するか (ただし、これはスクリプトを使用してアーカイブすることもできます)、サイト専用の専用 IP アドレスを用意する必要があります。

ドメインをアカウントに関連付ける必要もあります。ユーザーはこれを自分で追加する必要があり、ドメインがサーバーを指していることを確認するチェックをインターフェイスに追加することになるでしょう。このコードは次のようになります (System.Net 名前空間を含めることを忘れないでください)。

if (Dns.GetHostEntry("www.user.example.com").HostName == "www.example.com")
{
    // www.user.example.com is a CNAME for www.example.com
}

ASP.NET MVC プロジェクトでは、この特定の目的のためにルートを実装する必要があります。ドメインも考慮に入れる Route から継承するカスタム クラスを作成します。

于 2008-09-28T09:18:47.810 に答える
1

Smugmug (あなたが言及した人) は、ユーザーの個人的な写真セクションの URL にエイリアスを設定する CNAME レコードをユーザーにセットアップしてもらいます。ほとんどのユーザーにとって、すべてのセットアップを行うには、おそらくホストに連絡するか、ヘルプ ファイルを検索する必要があります。

そのため、www.tomsite.com は www.mywebapp.com でホストされているページを透過的に提供できますが、ユーザーは何らかの努力を払う必要があります。完全にシームレスにするには、ユーザーの Web ホストと何らかの調整が必要になります。 (Smugmug は GoDaddy とそのような契約を結んでいるようです)。

私はあなたがそこにあるすべてのウェブホストとの統合をセットアップできるとは思えないので、唯一の完全な解決策はあなたのユーザーのウェブサイトを自分でホストすることです (私はそれが合理的であるかどうかを判断するためにあなたのより広い状況について十分に知りません)解決)。

注: 自分の Web サーバーにエイリアスを設定する (別名 URL 書き換え) ことは、サイトを自分でホストしない限り機能しません。明らかに、ユーザーのドメインから取得した人はそもそもサーバーに到達しないからです。

于 2008-09-27T23:14:00.650 に答える
1

Web サーバーの外部 IP アドレスを指している各顧客のフレンドリ名を指定します。

IIS を使用して、ホスト ヘッダー要求で指定されたフレンドリ名を、そのフレンドリ名に配信する論理 Web サイトに解決します。IIS は、Web サイトと仮想フォルダーの両方をファイル システム内の同じフォルダーにマップします。顧客ごとに Web サイトを作成します。次に、その Web サイトを顧客のフレンドリ名にバインドします。

既定の Web サイトは、自分のフレンドリ名にのみマップすることを忘れないでください。無差別モード (「*」にマップ) のままにしておくと、結果は予測できなくなります。

ホスト ヘッダー マッピングを設定するには

[サイト]ノードの下にある[既定の Web サイト]を選択します。右上の [操作] ウィンドウで [バインド...] をクリックして、[サイトバインド] ダイアログを開きます。バインディングのリストが表示され、おそらく http * 80 というエントリが 1 つ含まれています。これを選択し、[編集... ] ボタンをクリックします。ホスト名を独自のフレンドリ名に設定します。

IIS7 Managerを実行し、顧客サイトごとにSitesノードの下に Web サイトを作成します。各 Web サイトを作成するときに、ファイル パスとホスト ヘッダー バインディングの両方を設定します。明らかに、ホスト ヘッダー バインディング (ホスト名) は、その顧客のフレンドリ名にする必要があります。

于 2008-09-27T23:19:03.820 に答える
0

Web サーバー設定 tomsite.com で、 mywebapp.com/user/tom/ パスに直接新しいレコードを作成するだけですか?

エイリアスのように見てください:)

もちろん、あなたは asp.net/windows ベースなので、この種のものを自動化するには IIS を深く掘り下げる必要があると思います。Apache を使用している場合は、httpd.conf に 3 つの単純な行を追加します。

于 2008-09-27T23:10:49.893 に答える