Wie erlaube ich einem Benutzer, seinen eigenen Domänennamen für einen gehosteten Dienst zu verwenden?

StackOverflow https://stackoverflow.com/questions/144630

Frage

Ich arbeite an einer ASP.NET MVC-Webanwendung, mit der Benutzer Inhalte veröffentlichen können. Abgesehen von der Veröffentlichung der Inhalte auf einem Remoteserver möchte ich Benutzern jedoch auch die direkte Verwendung ihres Domänennamens ermöglichen.Beispielsweise kann der Domänenname des Benutzers „Tom“ auf „TomSite.com“ verweisen http://www.mywebapp.com/user/tom, aber der Unterpfad wird ebenfalls zugeordnet.Beispielsweise wird TomSite.com/path www.mywebapp.com/user/tom/path zugeordnet, und dies ist für den Webbesucher transparent.Der Besucher wird „mywebapp.com“ nirgendwo auf TomSite.com sehen.

Ich denke, Smugmug.com bietet einen solchen Service an, um es den Leuten zu ermöglichen, ihren eigenen Domainnamen für das Fotoportfolio zu verwenden.Ich möchte das gleiche Ergebnis erzielen.

Wie kann ich das machen?Danke!

War es hilfreich?

Lösung

Dies erfordert mehrere Schritte.

Als erstes müssen Sie herausfinden, wie die Benutzer ihre Domäne konfigurieren einen CNAME-Eintrag für Sie vor Ort zu haben. Sie können dies in einer Reihe von Möglichkeiten archieve, wo die beste Bildung. Herstellung von Partnerschaften mit Hosting-Provider erfordert viel Volumen.

In IIS dies erfordert, dass Sie entweder auf jeden Hostnamen manuell hinzufügen (aber diese auch archiviert durch Skripting werden könnten) oder eine dedizierte IP-Adresse nur für Sie vor Ort.

Es gibt auch einen Bedarf für die Domäne mit einem Konto verknüpft werden. Der Anwender hat dies selbst hinzufügen und Sie würden wahrscheinlich einen Scheck in der Schnittstelle hinzuzufügen, die die Domain bestätigt wird auf dem Server gerichtet. Der Code für diese aussehen würde (Sie erinnern sich die System.Net-Namespace enthalten).

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

Sie ASP.NET MVC-Projekt müssen Sie Routen für diesen besonderen Zweck implementieren. Erstellen Sie eine benutzerdefinierte Klasse von der Route zu erben, die auch die Domäne berücksichtigt werden.

Andere Tipps

Smugmug (den Sie erwähnt haben) veranlasst seine Benutzer, einen CNAME-Eintrag einzurichten, der die URL für den persönlichen Fotobereich des Benutzers als Alias ​​verwendet.Für die meisten Benutzer ist es wahrscheinlich erforderlich, dass sie sich an ihren Hoster wenden oder Hilfedateien nachschlagen, um alles einzurichten.

Während www.tomsite.com also Seiten, die auf www.mywebapp.com gehostet werden, transparent bereitstellen könnte, müssen die Benutzer einen gewissen Aufwand betreiben.Um einen völlig nahtlosen Ablauf zu gewährleisten, benötigen Sie eine Vereinbarung mit dem Webhost des Benutzers (Smugmug scheint eine solche Vereinbarung mit GoDaddy zu haben).

Ich bezweifle, dass Sie in der Lage sein werden, eine solche Integration mit allen verfügbaren Webhosts einzurichten. Daher bestünde die einzige vollständige Lösung darin, die Websites Ihrer Benutzer selbst zu hosten (ich weiß nicht genug über Ihre Gesamtsituation, um festzustellen, ob das sinnvoll ist). Lösung).

Notiz:Das Einrichten eines Alias ​​auf Ihrem eigenen Webserver (auch bekannt als URL-Umschreiben) funktioniert nicht, es sei denn, Sie hosten die Website selbst, da Personen, die Daten von der Domäne Ihres Benutzers abrufen, offensichtlich gar nicht erst auf Ihrem Server ankommen.

Haben Sie jeden Kunden Friendly an der externen IP-Adresse des Webservers hingewiesen.

Verwenden Sie IIS die Friendly in der Host-Header Anfrage an die logische Website angegeben lösen Sie zu diesem Friendly geliefert werden sollen. IIS Karte glücklich sowohl eine Website und einen virtuellen Ordner auf dem gleichen Ordner im Dateisystem. Erstellen Sie eine Website für jeden Kunden. Dann binden, dass die Website an den Friendly des Kunden.

Beachten Sie die Standard-Website nur für Ihre eigenen Friendly (n) abzubilden. Wenn Sie es im Promiscuous-Modus (gemappt „*“) verlassen Ergebnisse unvorhersehbar sein werden.

, um Host-Header-Mapping gesetzt

Wählen Sie Standardwebsite unter Seiten Knoten. In den Aktionen Fenster oben rechts klicken Sie auf Bindungen ... den Site Bindungen zu öffnen Dialog. Es wird eine Liste von Bindungen, wahrscheinlich einen einzigen Eintrag enthält, der sagt http * 80. Wählen Sie diese Option und klicken Sie auf die Bearbeiten ... Taste. Setzen Sie Hostname Ihren eigenen Friendly.

Ausführen IIS7-Manager und für jeden Kunden vor Ort eine Website unter den Seiten Knoten erstellen. Legen Sie beide Dateipfad und Host-Header-Bindung, während Sie jede Website erstellen. Offensichtlich ist der Host-Header-Bindung (Hostname) soll dieser Kunden sein Friendly.

Sie einfach einen neuen Rekord in Ihrem Webserver macht direkt auf Ihren mywebapp.com/user/tom/ Pfad Einstellung tomsite.com?

Sehen Sie es wie ein Alias:)

Natürlich steht, sind da Sie asp.net/windows basiert, ich glaube, Sie werden tief in IIS digg müssen diese Art von Sachen zu automatisieren. Wenn Sie auf Apache wären, würde es Zugabe von 3 einfachen Linien zu httpd.conf sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top