Benutzerdefinierte Domain für GitHub-Projektseiten


434

Ich habe eine gh-pagesFiliale in einem meiner http://github.com Repos. Die GitHub-Projektseiten funktionieren einwandfrei, wenn ich zu http://myuser.github.com/myrepo gehe

Ich möchte eine benutzerdefinierte Domain (myexample.com) einrichten, die diese Projektseiten bereitstellt. Ich möchte beides myexample.com und www.myexample.comdiese Projektseiten bedienen.

Die Hilfe zu GitHub-Seiten besagt, dass Sie einen A-Eintrag und einen CNAME-Eintrag in Ihrem DNS erstellen sollen . Der A-Eintrag ist sinnvoll, aber ich weiß nicht, welchen CNAME-Eintrag ich in meinem DNS erstellen soll.

In den gh-pagesDokumenten wird angegeben, dass ein CNAMEDatensatz für 'charlie.github.com' erstellt werden soll, bei dem es sich um ein Benutzerseiten-Repository handelt. Ich habe kein Benutzerseiten-Repository - ich habe nur ein Projekt-Repository und einen gh-pagesZweig, den ich für myexample.comund verwenden möchte www.myexample.com.

Muss ich ein Benutzerseiten-Repository erstellen, damit ich meine Projektseite für www.myexample.com und myexample.com verwenden kann?

Ich würde es einfach versuchen, aber ich möchte sicherstellen, dass dies funktioniert, da ich bereits www.myexample.com live habe und keinen Fehler machen möchte.

Ich habe den GitHub-Support per E-Mail benachrichtigt und die Antwort war

Soweit ich weiß, können nicht beide auf dieselben Gh-Seiten verweisen.

Es fällt mir schwer zu glauben, dass sie nur A-Datensätze für Projektseiten unterstützen würden.

Hat das schon mal jemand erfolgreich gemacht?


10
Ich habe lacewing-project.org mit nur einem A-Datensatz eingerichtet, der auf 207.97.227.245 zeigt (keine CNAME-Datensätze), und es funktioniert einwandfrei. Ich habe auch eine Datei namens CNAME im Stammverzeichnis des gh-pages-Zweigs abgelegt, die den Domainnamen enthält.
James McLaughlin

In meinem Fall hat es den Trick getan, nur die CNAME-Datei im gh-pages-Zweig zu platzieren. Danke!
Jarandaf

Antworten:


521

23.01.19 UPDATE:

Die Dinge haben sich seit meiner letzten Antwort ziemlich verändert (zum Besseren). Diese aktualisierte Antwort zeigt Ihnen, wie Sie Folgendes konfigurieren:

  1. Wurzelspitze (example.com)
  2. Subdomain (www.example.com)
  3. HTTPS (optional, aber dringend empfohlen)

Am Ende werden alle Anfragen an example.coman https://www.example.com weitergeleitet (oder an http: //, wenn Sie sich dafür entscheiden, HTTPS NICHT zu verwenden). Ich benutze immer wwwals meine letzte Landung. Warum ( 1 , 2 ) ist für eine andere Diskussion.

Diese Antwort ist lang, aber nicht kompliziert. Ich war aus Gründen der Klarheit ausführlich, da die GitHub-Dokumente zu diesem Thema nicht klar oder linear sind.

Schritt 1: Aktivieren Sie GitHub-Seiten in den GitHub-Einstellungen

  1. Klicken Sie in Ihrem Repo auf die Registerkarte
  2. Scrollen Sie nach unten zum GitHub PagesAbschnitt. Sie haben zwei Möglichkeiten:
  3. Die Auswahl master branchwird /README.mdals Ihr Web behandelt index.html. Die Auswahl master branch /docs folderwird /docs/README.mdals Ihr Web behandelt index.html.
  4. Wähle ein Thema.
  5. Warten Sie eine Minute, während GitHub Ihre Website veröffentlicht. Überprüfen Sie, ob es funktioniert, indem Sie auf den Link neben klickenYour site is ready to be published at

Schritt 2: Geben Sie in den GitHub-Einstellungen eine benutzerdefinierte Domäne an

Geben Sie hier Ihren benutzerdefinierten Domainnamen ein und klicken Sie auf save:

Dies ist ein subtiler, aber wichtiger Schritt.

  • Wenn die benutzerdefinierte Domain, die Sie Ihrer GitHub Pages-Site hinzugefügt haben, lautet example.com, www.example.comwird zu weitergeleitetexample.com
  • Wenn die benutzerdefinierte Domain, die Sie Ihrer GitHub Pages-Site hinzugefügt haben, lautet www.example.com, example.comwird zu weitergeleitet www.example.com.

Wie bereits erwähnt, empfehle ich, immer bei zu landen, wwwdamit ich www.example.comwie oben abgebildet eintreten kann.

Schritt 3: Erstellen Sie DNS-Einträge

Erstellen Sie in der Webkonsole Ihres DNS-Anbieters vier AEinträge und einen CNAME.

  1. ADatensätze für @(aka root apex):

Bei einigen DNS-Anbietern müssen Sie angeben @, bei anderen (wie AWS Route 53) lassen Sie die Subdomain leer, um anzuzeigen @. In beiden Fällen sind dies die Azu erstellenden Datensätze:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
  1. Erstellen Sie einen CNAMEDatensatz, auf den www.example.com verweist YOUR-GITHUB-USERNAME.github.io.

Dies ist der verwirrendste Teil.

Beachten Sie YOUR-GITHUB-USERNAME NICHT den GitHub-Repo-Namen! Der Wert von YOUR-GITHUB-USERNAMEwird durch diese Tabelle bestimmt .

Für eine Benutzerseiten- Site (höchstwahrscheinlich das, was Sie sind) lautet der CNAMEEintrag wie folgt username.github.io:

Für eine Site auf Organisationsseiten lautet derCNAME Eintrag wie folgt orgname.github.io:

Schritt 5: Bestätigen Sie die DNS-Einträge

  1. Bestätigen Sie Ihre AAufzeichnungen durch Ausführen dig +noall +answer example.com. Es sollte die vier 185.x.x.xeingegebenen IP-Adressen zurückgeben.

  2. Bestätigt Ihren CNAMEDatensatz durch Ausführen dig www.example.com +nostats +nocomments +nocmd. Es sollte a zurückgebenCNAME YOUR-GITHUB-USERNAME.github.io

Es kann ungefähr eine Stunde dauern, bis diese DNS-Einträge aufgelöst / weitergegeben werden. Sobald dies der Fall ist, öffnen Sie Ihren Browser für http://example.comund er sollte zu weiterleitenhttp://www.example.com

Schritt 6: SSL (HTTPS) -Konfiguration. Optional, aber sehr zu empfehlen

Nachdem die benutzerdefinierte Domain funktioniert hat, kehren Sie zu den Repo-Einstellungen zurück. Wenn Sie die Einstellungsseite bereits geöffnet haben, aktualisieren Sie die Seite hart.

Wenn sich unter dem Enforce HTTPSKontrollkästchen eine Meldung befindet , die besagt, dass sie noch verarbeitet wird, müssen Sie warten. Möglicherweise müssen Sie auch die saveSchaltfläche im Custom domainAbschnitt drücken , um die Enforce HTTPSVerarbeitung zu starten .

Sobald die Verarbeitung abgeschlossen ist, sollte es folgendermaßen aussehen:

Geben Sie hier die Bildbeschreibung ein

Klicken Sie einfach auf das Enforce HTTPSKontrollkästchen und zeigen Sie mit Ihrem Browser auf https://example.com. Es sollte umleiten und öffnenhttps://www.example.com

DAS IST ES!

GitHub hält Ihr HTTPS-Zertifikat automatisch auf dem neuesten Stand UND sollte den Apex behandeln, wwwum über HTTPS umzuleiten.

Hoffe das hilft!!

...

Alte (vor dem 23.01.19) Antwort

Also habe ich es herausgefunden. James McLaughlin gab mir den Anstoß, den ich brauchte.

So richten Sie eine benutzerdefinierte Domain für ein Gh-Pages-Projekt-Seiten-Repo ein, das www.IhreDomain.com und IhreDomain.com verwaltet (vorausgesetzt, Sie haben bereits einen Gh-Seiten-Zweig in Ihrem Repo):

  1. Von Ihrem Projekt-Repo, Gh-Pages-Zweig. Erstellen Sie eine CNAME-Datei mit dem Inhalt yourdomain.com. Commit dann drücken.
  2. Richten Sie in Ihrem DNS-Manager zwei cnameEinträge ein. Eine für die Wurzelspitze (@) und eine für www. Beide zeigen auf YOURusername.github.io. Wenn Ihr DNS-Anbieter keine ALIASEinträge auf der Stammspitze (@) unterstützt, erstellen Sie einfach AEinträge, die auf 192.30.252.153und verweisen192.30.252.154
  3. Warten Sie, bis Ihre Nameserver aktualisiert sind:

    dig yourdomain.com +nostats +nocomments +nocmd


14
Ab 19. April 2012, GitHub Dokumentation Anwendungen 204.232.175.78Adresse als IP.
Aseem Kishore

31
Geprüft am 6. Februar 2014 und in den Github-Dokumenten heißt es: DNS-A-Einträge erstellen, die auf die folgenden IP-Adressen verweisen: 192.30.252.153, 192.30.252.154.
Danny

2
"Wenn Sie einen A-Eintrag verwenden, der auf 207.97.227.245 oder 204.232.175.78 verweist, müssen Sie Ihre DNS-Einstellungen aktualisieren, da wir Pages nicht mehr direkt von diesen Servern aus bereitstellen." help.github.com/articles/my-custom-domain-isn-t-working - 08.03.14
eddywashere

11
Ich glaube nicht, dass es möglich ist, einen CNAME-Eintrag über die nackte @ Domain einzurichten. Aus diesem Grund benötigen Sie die A-Datensätze, um die Umleitung von der nackten Domain zur www-Subdomain zu handhaben. Es ist ein Problem mit jedem Cloudhost. Keine Garantie für eine feste IP.
Superluminary

2
@rynop GoDaddy erlaubt nicht @ und www zu yourusername.github.io, nur ein CNAME-Datensatz pro Subdomain :(
Tejas Manohar

241

Überblick

Die Dokumentation ist etwas verwirrend, wenn es um Projektseiten geht , im Gegensatz zu Benutzerseiten . Es fühlt sich an, als müsste man mehr tun, aber eigentlich ist der Prozess sehr einfach.

Es involviert:

  1. Einrichten von 2 statischen A-Datensätzen für die nackte Domain (kein WWW).
  2. Erstellen eines CNAME-Datensatzes für www, der auf eine GitHub-URL verweist. Dies übernimmt die WWW-Umleitung für Sie.
  3. Erstellen einer Datei mit dem Namen CNAME (großgeschrieben) in Ihrem Projektstamm im Zweig gh-pages. Dadurch wird Github mitgeteilt, auf welche URL zu antworten ist.
  4. Warten Sie, bis sich alles verbreitet hat.

Was du bekommen wirst

Ihr Inhalt wird über eine URL des Formulars http://nicholasjohnson.com bereitgestellt .

Wenn Sie http://www.nicholasjohnson.com besuchen, wird eine 301-Weiterleitung an die nackte Domain zurückgegeben.

Der Pfad wird von der Weiterleitung respektiert, sodass der Verkehr zu http://www.nicholasjohnson.com/angular zu http://nicholasjohnson.com/angular umgeleitet wird .

Sie können eine Projektseite pro Repository haben. Wenn Ihre Repos geöffnet sind, können Sie so viele haben, wie Sie möchten.

Hier ist der Prozess:

1. Erstellen Sie einen Datensatz

Zeigen Sie für die A-Datensätze @ auf die folgenden IP-Adressen:

@: 185.199.108.153
@: 185.199.109.153
@: 185.199.110.153
@: 185.199.111.153

Dies sind die statischen Github-IP-Adressen, von denen aus Ihre Inhalte bereitgestellt werden.

2. Erstellen Sie einen CNAME-Datensatz

Zeigen Sie für den CNAME-Datensatz www auf yourusername.github.io. Beachten Sie den nachfolgenden Punkt. Beachten Sie auch, dass dies der Benutzername und nicht der Projektname ist . Sie müssen den Projektnamen noch nicht angeben. Github verwendet die CNAME- Datei , um zu bestimmen, aus welchem ​​Projekt Inhalte bereitgestellt werden sollen .

z.B

www: forwardadvance.github.io.

Der Zweck des CNAME besteht darin, den gesamten WWW-Subdomain-Verkehr auf eine GitHub-Seite umzuleiten, die auf die nackte Domain umleitet.

Hier ist ein Screenshot der Konfiguration, die ich für meine eigene Website http://nicholasjohnson.com verwende :

A- und CNAME-Datensätze für statische Github-Seiten erforderlich

3. Erstellen Sie eine CNAME-Datei

Fügen Sie Ihrem Projektstamm im Zweig gh-pages eine Datei mit dem Namen CNAME hinzu. Dies sollte die Domain enthalten, die Sie bedienen möchten. Stellen Sie sicher, dass Sie festschreiben und pushen.

z.B

nicholasjohnson.com

Diese Datei weist GitHub an, dieses Repo zu verwenden, um den Datenverkehr zu dieser Domain zu verarbeiten.

4. Warten Sie

Warten Sie nun 5 Minuten, Ihre Projektseite sollte jetzt live sein.


1
Nein, die Apex-Domäne hat eine statische IP. Die www-Subdomain hat den CNAME.
Superluminary

4
@superluminary, ich habe Ihren Vorgang wiederholt, und ich habe zwei Probleme: 1) Ich verwende freeDNSraid.org für die DNS-Freigabe, die es nicht erlaubt, Trailing hinzuzufügen. in username.github.io .. 2) als ich github.io url ohne nachlauf hinzugefügt habe, funktioniert mydomain.com, aber ich kann nicht mit www.mydomain.com zugreifen ??
Bistaumanga

4
Der Teil, den ich über GitHub-Dokumente nicht herausfinden konnte, war die URL, die für das Projekt verwendet werden sollte. Vielen Dank für diese Antwort: "Dies ist der Benutzername, nicht der Projektname." Verwenden Sie alsoyourUserName.github.io.
pkamb

1
Ich habe diese Lösung aktualisiert und empfehle sie wirklich. Sie können es auf andere Weise zum Laufen bringen, z. B. mithilfe eines CNAME für den @ -Host, aber es wird E-Mails beschädigen usw. Dies ist die beste Lösung, die ich gefunden habe. Vielen Dank.
Steven L.

1
Vielen Dank! Ich war beim richtigen Wert für den CNAME-Eintrag in DNS festgefahren - nur organisation.github.io, egal welches Projekt unter dieser Organisation Sie bedienen möchten. (dh NICHT organisation.github.io/repo)
Libby

21

Wenn Sie sich fragen, wie Ihre Domain angezeigt werden soll, www.mydomain.comanstatt die wwwAnforderung umzuleiten mydomain.com, versuchen Sie Folgendes:

Die CNAME-Datei im gh-pages- Zweig enthält eine Zeile:

www.mydomain.com(statt mydomain.com)

Unabhängig von Ihrer Präferenz für die Umleitung (mit anderen Worten, unabhängig davon, was sich in Ihrer CNAME-Datei im Zweig gs-pages befindet) sollten Sie dies bei Ihrem DNS-Anbieter wie folgt einrichten:

A      @    192.30.252.154
A      @    192.30.252.153
CNAME  www  username.github.io

@zwacky warum kann ich den CNAME nicht einfach auf @ richten? Warum sollten "www.mydomain.com" und "mydomain.com" in möglicherweise unterschiedliche IPs aufgelöst werden?
aaa90210

19

Kurze Antwort

Diese detaillierten Erklärungen sind großartig, aber die Verwirrung des OP (und meiner) könnte mit einem Satz behoben werden: "Direktes DNS zu Ihrem GitHub- Benutzernamen oder Ihrer Organisation, Ignorieren des spezifischen Projekts und Hinzufügen der entsprechenden CNAME- Dateien in Ihren Projekt-Repositorys: GitHub sendet das richtige DNS für das richtige Projekt basierend auf Dateien im Respository. "


1
Ich habe keine Ahnung, was "DNS senden" bedeutet.
Ceving

Leiten Sie DNS-Abfragen um, damit HTTP-Anforderungen mit bestimmten Domänennamen die richtigen Dokumente als Antworten erhalten.
Jim Pivarski

13

In der Dokumentation von Github vom 29. August 2013 heißt es:

Warnung: Unterpfade für Projektseiten wie http://username.github.io/projectname werden nicht in die benutzerdefinierte Domäne eines Projekts umgeleitet.


3
Ich bin verwirrt, warum sie dieses Verhalten hinzugefügt haben. Ich möchte, dass mein .com auf Github-Seiten verweist, nicht umgekehrt.
Jordan Scales

9
Das hat mich auch sehr verwirrt. So wie ich es jetzt verstehe, können Sie Ihre Website immer noch auf Github-Seiten verweisen, aber Ihr Benutzername.github.io/Ihre Website wird nicht auf Ihre Website weitergeleitet. Das ist in Ordnung, da Ihre Site.com weiterhin funktioniert. Aktualisieren Sie einfach Ihre DNS-Einträge und warten Sie, bis das Problem behoben ist. help.github.com/articles/…
eddywashere

Dies sollte SEO-Auswirkungen (Search Engine Optimization) auf die Website haben. Google soll das Ergebnisranking von Inhalten herabstufen, auf die über mehrere Domains zugegriffen werden kann. Dies ist einer von mehreren Gründen für die Anwendung von 301 ("permanenten") Weiterleitungen von username.github.io/projectnamebis www.projectname.com.
BorromeanNot

3

Heutzutage ist es viel einfacher!

  1. Aktualisieren Sie Ihren Apex-Domäneneintrag (@) auf Punkt

192.30.252.154

192.30.252.153

  1. Bearbeiten Sie Ihr Custome-Domain- Feld in Ihren Github-Repo-Einstellungen.

enter image description here

  1. www und andere Subdomains können als CNAME zur Apex-Domain aktualisiert werden.

2

Nach ein wenig Frustration habe ich gerade festgestellt, dass Sie bei Verwendung von PairNIC lediglich die Einstellung "Web Forwarding" unter "Custom DNS" aktivieren und den Benutzernamen.github.io/project-Adresse angeben müssen Richten Sie automatisch sowohl die Apex- als auch die Subdomain-Datensätze für Sie ein. Es scheint genau das zu tun, was in der akzeptierten Antwort vorgeschlagen wird. Sie können jedoch nicht genau dasselbe tun, indem Sie Datensätze manuell hinzufügen. Sehr eigenartig. Wie auch immer, ich habe eine Weile gebraucht, um das herauszufinden, also dachte ich, ich würde es teilen, um allen anderen die Mühe zu ersparen.


0

Ich möchte meine Schritte teilen , die sich ein wenig von denen von rynop und superluminary unterscheiden .

  • for ARecord ist aber genau das gleiche
  • statt der Schaffung CNAMEfür wwwich würde es vorziehen , um es zu meinem leeren Domain zu umleiten ( non-www)

Diese Konfiguration bezieht sich auf die Anleitung der bevorzugten Domäne . Die Domain-Einstellung von wwwto non wwwoder umgekehrt kann bei jedem Domain-Anbieter unterschiedlich sein. Da sich meine Domain unter GoDaddy befindet, habe ich sie unter der Domain-Einstellung mithilfe der Subdomain-Weiterleitung (301) festgelegt.

Als Ergebnis des Verweises der Domain auf das Github-Repository werden dann alle URLs für masterund gh-pagesZweig ähnlich wie die unten aufgeführten an die bevorzugte Domain gesendet:

Meister

Durch Erstellen einer CNAMEDatei im masterZweig (überprüfen Sie diese in meinem Benutzer-Repository ).

http://hyipworld.github.io/
http://www.hyip.world/
http://hyip.world/

Gh-Seiten

Indem Sie dieselbe CNAMEDatei im gh-pagesZweig erstellen (überprüfen Sie sie in meinem Projekt-Repository ).

http://hyipworld.github.io/maps/
http://www.hyip.world/maps/
http://hyip.world/maps/

Zusätzlich zu der CNAMEobigen Datei müssen Sie möglicherweise die Jekyll-Verarbeitung auf GitHub-Seiten vollständig umgehen, indem Sie eine Datei erstellen, die .nojekyllim Stammverzeichnis Ihres Seitenrepos benannt ist.


3
Ich würde empfehlen, nicht Godaddy zu verwenden, sondern nur persönliche Meinung
MMachinegun
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.