Dominio personalizzato per le pagine del progetto GitHub


436

Ho una gh-pagesfiliale in uno dei miei repository http://github.com . Le pagine del progetto GitHub funzionano bene se vado su http://myuser.github.com/myrepo

Voglio impostare un dominio personalizzato (myexample.com) che servirà le pagine di questo progetto. Voglio entrambi myexample.com e www.myexample.comservire queste pagine del progetto.

Le pagine di GitHub aiutano a dire di creare un record A e un record CNAME nel DNS. Il record A ha senso, ma non so quale record CNAME fare nel mio DNS.

I gh-pagesdocumenti dicono di fare un CNAMErecord per "charlie.github.com" che è un repository di pagine utente. Non ho un repository di pagine utente - ho solo un repository di progetti e un gh-pagesramo che voglio usare per myexample.come www.myexample.com.

Devo creare un repository di pagine utente solo per poter utilizzare la pagina del mio progetto per www.myexample.com e myexample.com?

Vorrei solo provarlo, ma voglio assicurarmi che funzionerà perché ho già www.myexample.com in diretta e non voglio fare un errore.

Ho inviato un'email al supporto di GitHub e la loro risposta è stata

Per quanto ne so, non puoi avere entrambi le stesse pagine fantasma.

Trovo difficile credere che supporterebbero solo i record A per le pagine del progetto.

Qualcuno l'ha già fatto con successo prima?


10
Ho creato lacewing-project.org con solo un record A che indica 207.97.227.245 (nessun record CNAME) e funziona benissimo. Ho anche inserito un file chiamato CNAME nella radice del ramo gh-pages contenente il nome di dominio.
James McLaughlin,

Nel mio caso, semplicemente posizionando il file CNAME nel ramo gh-pages ha funzionato, grazie!
Jarandaf,

Risposte:


522

23/01/19 AGGIORNAMENTO:

Le cose sono cambiate un po '(in meglio) dalla mia ultima risposta. Questa risposta aggiornata ti mostrerà come configurare:

  1. Apice radice (esempio.com)
  2. Sottodominio (www.esempio.com)
  3. HTTPS (opzionale ma fortemente incoraggiato)

Alla fine, tutte le richieste example.comverranno reindirizzate a https://www.example.com (o http: // se si sceglie di NON utilizzare HTTPS). Uso sempre wwwcome atterraggio finale. Perché ( 1 , 2 ), è per un'altra discussione.

Questa risposta è lunga ma è non è complicato. Sono stato prolisso per chiarezza poiché i documenti di GitHub su questo argomento non sono chiari o lineari.

Passaggio 1: abilitare le pagine GitHub nelle impostazioni di GitHub

  1. Dal tuo repository, fai clic sulla scheda
  2. Scorri verso il basso fino alla GitHub Pagessezione. Hai due opzioni:
  3. La scelta master branchtratterà /README.mdcome il tuo web index.html. La scelta master branch /docs foldertratterà /docs/README.mdcome il tuo web index.html.
  4. Scegli un tema
  5. Attendi un minuto mentre GitHub pubblica il tuo sito. Verifica che funzioni facendo clic sul collegamento accanto aYour site is ready to be published at

Passaggio 2: specificare il dominio personalizzato nelle impostazioni di GitHub

Inserisci qui il tuo nome di dominio personalizzato e premi save:

Questo è un passo sottile ma importante.

  • Se il dominio personalizzato che hai aggiunto al tuo sito GitHub Pages è example.com, www.example.comverrà reindirizzato aexample.com
  • Se il dominio personalizzato che hai aggiunto al tuo sito GitHub Pages è www.example.com, example.comverrà reindirizzato a www.example.com.

Come accennato in precedenza, ti consiglio di atterrare sempre wwwcosì ho inserito www.example.comcome nella foto sopra.

Passaggio 3: creare voci DNS

Nella console Web del tuo provider DNS, crea quattro Arecord e uno CNAME.

  1. ARecord per @(aka apice radice):

Alcuni provider DNS ti chiederanno di specificare @, altri (come AWS Route 53) lasceranno vuoto il sottodominio da indicare @. In entrambi i casi, questi sono i Arecord da creare:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
  1. Creare un CNAMErecord per puntare a www.esempio.com YOUR-GITHUB-USERNAME.github.io.

Questa è la parte più confusa.

Nota YOUR-GITHUB-USERNAME NON il nome repository GitHub! Il valore di YOUR-GITHUB-USERNAMEè determinato da questo grafico .

Per un sito di pagine utente (molto probabilmente quello che sei), la CNAMEvoce sarà username.github.io, ad esempio:

Per un sito di pagine dell'organizzazione , la CNAMEvoce sarà orgname.github.io, ad esempio:

Passaggio 5: confermare le voci DNS

  1. Conferma i tuoi Arecord eseguendo dig +noall +answer example.com. Dovrebbe restituire i quattro 185.x.x.xindirizzi IP inseriti.

  2. Conferma il tuo CNAMErecord eseguendo dig www.example.com +nostats +nocomments +nocmd. Dovrebbe restituire aCNAME YOUR-GITHUB-USERNAME.github.io

Potrebbero essere necessari circa un'ora per la risoluzione / propagazione di queste voci DNS. Una volta fatto, apri il tuo browser http://example.come dovrebbe essere reindirizzato ahttp://www.example.com

Passaggio 6: Configurazione SSL (HTTPS). Opzionale, ma altamente raccomandato

Dopo aver funzionato il dominio personalizzato, tornare alle impostazioni del repository. Se hai già aperto la pagina delle impostazioni, aggiorna la pagina.

Se nella Enforce HTTPScasella è presente un messaggio che indica che è ancora in fase di elaborazione, dovrai attendere. Potrebbe anche essere necessario savepremere il pulsante nella Custom domainsezione per iniziare l' Enforce HTTPSelaborazione.

Una volta completata l'elaborazione, dovrebbe apparire così:

inserisci qui la descrizione dell'immagine

Basta fare clic sulla Enforce HTTPScasella di controllo e puntare il browser https://example.com. Dovrebbe ri-dirigere e aprirehttps://www.example.com

QUESTO È TUTTO!

GitHub manterrà automaticamente aggiornato il tuo certificato HTTPS E dovrebbe gestire l'apice per wwwreindirizzare su HTTPS.

Spero che sia di aiuto!!

...

Vecchia risposta (prima del 23/01/19)

Quindi l'ho capito. James McLaughlin mi ha dato la spinta di cui avevo bisogno.

Per impostare un dominio personalizzato per un repository di Pagine di progetto gh-pages che gestisce www.yourdomain.com e yourdomain.com (presuppone che tu abbia già un ramo gh-pages sul tuo repository):

  1. Dal repository del progetto, ramo gh-pages. Crea un file CNAME con i contenuti yourdomain.com. Commettere quindi spingere.
  2. Nel tuo gestore DNS, imposta due cnamerecord. Uno per l'apice radice (@) e uno per www. Entrambi indicano YOURusername.github.io. Se il provider DNS NON supporta i ALIASrecord sull'apice radice (@), è sufficiente creare Arecord che puntino a 192.30.252.153e192.30.252.154
  3. Attendi fino all'aggiornamento del tuo server dei nomi:

    dig yourdomain.com +nostats +nocomments +nocmd


14
A partire dal 19 aprile 2012, la documentazione di GitHub utilizza 204.232.175.78come indirizzo IP.
Aseem Kishore,

31
Controllato il 6 febbraio 2014 e i documenti di github dicono: Crea record DNS A che puntano ai seguenti indirizzi IP: 192.30.252.153, 192.30.252.154.
Danny,

2
"Se stai utilizzando un record A che punta a 207.97.227.245 o 204.232.175.78, dovrai aggiornare le tue impostazioni DNS, poiché non serviamo più Pages direttamente da quei server." help.github.com/articles/my-custom-domain-isn-t-working - 3/8/14
eddywashere

11
Non penso che sia possibile impostare un record CNAME dal nudo @ domain. Ecco perché hai bisogno dei record A, per gestire il reindirizzamento dal dominio nudo al sottodominio www. È un problema con qualsiasi cloudhost. Nessuna garanzia di un IP fisso.
superluminario

2
@rynop GoDaddy non consente @ e www al tuo nome utente.github.io, solo un record CNAME per sottodominio :(
Tejas Manohar

241

Panoramica

La documentazione è un po 'confusa quando si tratta di pagine di progetto , al contrario di pagine utente . Sembra che dovresti fare di più, ma in realtà il processo è molto semplice.

Implica:

  1. Impostazione di 2 record A statici per il dominio nudo (no www).
  2. Creazione di un record CNAME per www che punterà a un URL GitHub. Questo gestirà il reindirizzamento www per te.
  3. Creazione di un file chiamato CNAME (in maiuscolo) nella radice del progetto sul ramo gh-pages. Questo dirà a Github a quale URL rispondere.
  4. Aspetta che tutto si propaghi.

Cosa otterrai

Il tuo contenuto verrà pubblicato da un URL del modulo http://nicholasjohnson.com .

La visita di http://www.nicholasjohnson.com restituirà un reindirizzamento 301 al dominio nudo.

Il percorso verrà rispettato dal reindirizzamento, quindi il traffico verso http://www.nicholasjohnson.com/angular verrà reindirizzato a http://nicholasjohnson.com/angular .

Puoi avere una pagina di progetto per repository, quindi se i tuoi repository sono aperti puoi averne quanti ne desideri.

Ecco il processo:

1. Creare un record

Per i record A, punta @ ai seguenti indirizzi IP:

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

Questi sono gli indirizzi IP statici di Github da cui verranno offerti i tuoi contenuti.

2. Creare un record CNAME

Per il record CNAME, punta su wwwususername.github.io. Nota il punto finale finale. Nota anche che questo è il nome utente, non il nome del progetto . Non è ancora necessario specificare il nome del progetto. Github utilizzerà il file CNAME per determinare da quale progetto pubblicare il contenuto.

per esempio

www: forwardadvance.github.io.

Lo scopo di CNAME è di reindirizzare tutto il traffico del sottodominio www su una pagina GitHub che reindirizzerà 301 al dominio nudo.

Ecco uno screenshot della configurazione che utilizzo per il mio sito http://nicholasjohnson.com :

Record A e CNAME richiesti per le pagine statiche di Github

3. Creare un file CNAME

Aggiungi un file chiamato CNAME alla radice del tuo progetto nel ramo gh-pages. Questo dovrebbe contenere il dominio che vuoi servire. Assicurati di impegnarti e spingere.

per esempio

nicholasjohnson.com

Questo file dice a GitHub di usare questo repository per gestire il traffico verso questo dominio.

4. Aspetta

Ora attendi 5 minuti, la pagina del tuo progetto dovrebbe ora essere attiva.


1
No, il dominio apex ha un IP statico. Il sottodominio www ha il CNAME.
superluminario

4
@superluminary, ho ripetuto il tuo processo e ho due problemi, 1) Sto usando freeDNS fear.org per la condivisione DNS, che non consente di aggiungere il trailing. in username.github.io .. 2) quando ho aggiunto github.io url senza trascinamento., mydomain.com funziona, ma non riesco ad accedere a www.mydomain.com ??
bistaumanga,

4
La parte che non riuscivo a capire tramite i documenti di GitHub era quale URL usare per il progetto. Grazie per questa risposta: "questo è il nome utente, non il nome del progetto". quindi usayourUserName.github.io.
pkamb il

1
Ho aggiornato questa soluzione e consiglio vivamente di farlo. Puoi farlo funzionare in altri modi, ad esempio usando un CNAME per l'host @, ma romperà la posta elettronica, ecc. Questa è la soluzione migliore che ho trovato. Grazie.
Steven L.,

1
Grazie! Ero bloccato sul valore corretto per il record CNAME in DNS - solo organizzazione.github.io, indipendentemente dal progetto in quell'organizzazione che stai cercando di pubblicare. (ad esempio, NON organizza.github.io/repo)
Libby,

21

Se ti stai chiedendo come far apparire il tuo dominio come www.mydomain.cominvece di reindirizzare la wwwrichiesta mydomain.com, prova questo:

Il file CNAME sul ramo gh-pages avrà una riga:

www.mydomain.com(invece di mydomain.com)

Indipendentemente dalle tue preferenze sul reindirizzamento (in altre parole, non importa ciò che è nel tuo file CNAME sul ramo gs-pages), con il tuo provider DNS , dovresti impostarlo in questo modo:

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

@zwacky perché non posso semplicemente puntare il CNAME su @? perché "www.mydomain.com" e "mydomain.com" dovrebbero risolvere a IP potenzialmente diversi?
aaa90210,

19

Risposta breve

Queste spiegazioni dettagliate sono fantastiche, ma la confusione dell'OP (e mia) potrebbe essere risolta con una frase: "Dirigi il DNS al tuo nome utente o organizzazione GitHub , ignorando il progetto specifico e aggiungi i file CNAME appropriati nei repository del tuo progetto: GitHub invierà il DNS giusto al progetto giusto in base ai file nel repository. "


1
Non ho idea di cosa significhi "invio di DNS".
ceving

Reindirizzare le query DNS, in modo che le richieste HTTP con nomi di dominio particolari ottengano i documenti giusti come risposte.
Jim Pivarski,

13

Al 29 agosto 2013, la documentazione di Github afferma che:

Avvertenza: i percorsi secondari delle pagine del progetto come http://username.github.io/projectname non verranno reindirizzati al dominio personalizzato di un progetto.


3
Sono confuso perché hanno aggiunto questo comportamento. Voglio che il mio .com punti a pagine github, non viceversa.
Jordan Scales

9
Ne ero davvero confuso. Come ora capisco, puoi ancora indirizzare yoursite.com alle pagine di github, ma tuonomeutente.github.io/tuo sito non reindirizzerà a yoursite.com. Va bene perché yoursite.com funzionerà ancora, assicurati di aggiornare i tuoi record DNS e attendi che si risolva. help.github.com/articles/…
eddywashere

Questo dovrebbe avere ramificazioni SEO (Search Engine Optimization) per il sito web. Si dice che Google declassi la classifica dei risultati dei contenuti accessibili da più domini, che è uno dei diversi motivi per applicare reindirizzamenti 301 ("permanenti") username.github.io/projectnamea www.projectname.com.
BorromeanNon

3

Oggi le cose sono molto più facili!

  1. Aggiorna il tuo record di dominio Apex (@) in modo che punti

192.30.252.154

192.30.252.153

  1. Modifica il campo del tuo dominio Custome nelle impostazioni del repository github.

enter image description here

  1. www e altri sottodomini possono essere aggiornati come CNAME al dominio apex.

2

Ho appena scoperto, dopo un po 'di frustrazione, che se stai usando PairNIC , tutto ciò che devi fare è abilitare l'impostazione "Web Forwarding" in "DNS personalizzato" e fornire l'indirizzo username.github.io/project e imposta automaticamente per te sia i record dell'apice che quelli del sottodominio. Sembra fare esattamente ciò che viene suggerito nella risposta accettata. Tuttavia, non ti consentirà di fare esattamente la stessa cosa aggiungendo manualmente i record. Molto strano. Comunque, mi ci è voluto un po 'per capirlo, quindi ho pensato di condividere per salvare il problema a tutti gli altri.


0

Vorrei condividere i miei passi, che è un po 'diverso da quello offerto da Rynop e dal superluminario .

  • per ARecord è esattamente lo stesso ma
  • invece di creare CNAMEper wwwpreferirei reindirizzarlo al mio dominio vuoto ( non-www)

Questa configurazione si riferisce alla guida del dominio preferito . L'impostazione di dominio wwwper non wwwo viceversa può essere diverso su ciascuno dei fornitori di dominio. Dal momento che il mio dominio è in GoDaddy, quindi in Impostazioni dominio l' ho impostato usando il Sottodominio Forwarding (301).

Come risultato del puntamento del dominio al repository Github, fornirà quindi tutti gli URL per entrambi mastere gh-pagesramo simili come quelli che ho elencato di seguito va al dominio preferito:

maestro

Creando il CNAMEfile sul masterramo (controllalo sul mio repository utente ).

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

GH-pagine

Creando lo stesso CNAMEfile sul gh-pagesramo (controllalo sul mio repository di progetti ).

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

Oltre al CNAMEfile sopra, potrebbe essere necessario bypassare completamente l'elaborazione Jekyll sulle pagine GitHub creando un file denominato .nojekyllnella radice del repository delle pagine.


3
Consiglierei di non usare godaddy, ma solo un'opinione personale
MMachinegun
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.