Domain khusus untuk halaman proyek GitHub

436

Saya memiliki gh-pagescabang di salah satu repos http://github.com saya . Halaman proyek GitHub berfungsi dengan baik jika saya mengunjungi http://myuser.github.com/myrepo

Saya ingin menyiapkan domain khusus (myexample.com) yang akan menyajikan halaman proyek ini. Saya ingin keduanya myexample.com dan www.myexample.comuntuk melayani halaman proyek ini.

Halaman GitHub membantu mengatakan membuat catatan A dan catatan CNAME di DNS Anda. Catatan A masuk akal, tapi saya tidak tahu catatan CNAME apa yang harus dibuat di DNS saya.

The gh-pagesdocs mengatakan untuk membuat CNAMErekor 'charlie.github.com' yang merupakan halaman pengguna repositori. Saya tidak punya repositori halaman pengguna - Saya hanya punya repositori proyek dan gh-pagescabang yang ingin saya gunakan untuk myexample.comdan www.myexample.com.

Apakah saya perlu membuat repositori halaman pengguna supaya saya bisa menggunakan halaman proyek saya untuk www.myexample.com dan myexample.com?

Saya hanya akan mencobanya, tetapi saya ingin memastikan ini akan berhasil karena saya sudah memiliki www.myexample.com langsung dan tidak ingin membuat kesalahan.

Saya mengirim email dukungan GitHub dan tanggapan mereka

Anda tidak dapat memiliki keduanya mengarah ke halaman gh yang sama sejauh yang saya tahu.

Saya merasa sulit untuk percaya bahwa mereka hanya akan mendukung catatan A untuk halaman proyek.

Adakah yang berhasil melakukan ini sebelumnya?

rynop
sumber
10
Saya telah menyiapkan lacewing-project.org hanya dengan catatan A yang menunjuk ke 207.97.227.245 (tidak ada catatan CNAME), dan berfungsi dengan baik. Saya juga meletakkan file bernama CNAME di root dari cabang gh-pages yang berisi nama domain.
James McLaughlin
Dalam kasus saya, hanya menempatkan file CNAME di cabang gh-halaman berhasil, terima kasih!
jarandaf

Jawaban:

522

1/23/19 PEMBARUAN:

Banyak hal telah berubah (menjadi lebih baik) sejak jawaban terakhir saya. Jawaban yang diperbarui ini akan menunjukkan kepada Anda cara mengkonfigurasi:

  1. Root apex (example.com)
  2. Sub-domain (www.example.com)
  3. HTTPS (opsional tetapi sangat dianjurkan)

Pada akhirnya, semua permintaan untuk example.comakan diarahkan kembali ke https://www.example.com (atau http: // jika Anda memilih TIDAK untuk menggunakan HTTPS). Saya selalu menggunakan wwwsebagai pendaratan terakhir saya. Mengapa ( 1 , 2 ), untuk diskusi lain.

Jawaban ini panjang tetapi tidak rumit. Saya menggunakan kejelasan karena dokumen GitHub tentang topik ini tidak jelas atau linear.

Langkah 1: Aktifkan halaman GitHub dalam pengaturan GitHub

  1. Dari repo Anda, klik pada tab
  2. Gulir ke bawah ke GitHub Pagesbagian tersebut. Anda memiliki dua opsi:
  3. Memilih master branchakan diperlakukan /README.mdsebagai web Anda index.html. Memilih master branch /docs folderakan diperlakukan /docs/README.mdsebagai web Anda index.html.
  4. Pilih tema.
  5. Tunggu sebentar sementara GitHub menerbitkan situs Anda. Verifikasi itu berfungsi dengan mengklik tautan di sebelahYour site is ready to be published at

Langkah 2: Tentukan domain khusus di pengaturan GitHub

Masukkan nama domain khusus Anda di sini dan tekan save:

Ini adalah langkah yang halus, tetapi penting.

  • Jika domain khusus yang Anda tambahkan ke situs Halaman GitHub Anda adalah example.com, maka www.example.comakan dialihkan keexample.com
  • Jika domain khusus yang Anda tambahkan ke situs Halaman GitHub Anda adalah www.example.com, maka example.comakan dialihkan ke www.example.com.

Seperti disebutkan sebelumnya, saya sarankan selalu mendarat wwwsehingga saya masuk www.example.comseperti yang digambarkan di atas.

Langkah 3: Buat entri DNS

Di konsol web penyedia DNS Anda, buat empat Acatatan dan satu CNAME.

  1. ARekaman untuk @(alias root apex):

Beberapa penyedia DNS akan meminta Anda menentukan @, yang lain (seperti AWS Route 53), Anda akan membiarkan sub-domain kosong untuk menunjukkan @. Dalam kedua kasus ini , ini adalah Acatatan yang harus dibuat:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
  1. Buat CNAMEcatatan untuk mengarahkan www.example.com ke YOUR-GITHUB-USERNAME.github.io.

Ini adalah bagian yang paling membingungkan.

Perhatikan YOUR-GITHUB-USERNAME BUKAN nama repo GitHub! Nilai YOUR-GITHUB-USERNAMEditentukan oleh grafik ini .

Untuk situs halaman Pengguna (kemungkinan besar Anda), CNAMEentri akan berupa username.github.io, mis:

Untuk situs halaman Organisasi , CNAMEentri akan berupa orgname.github.io, mis:

Langkah 5: Konfirmasikan entri DNS

  1. Konfirmasikan Acatatan Anda dengan menjalankan dig +noall +answer example.com. Seharusnya mengembalikan empat 185.x.x.xalamat IP yang Anda masukkan.

  2. Konfirmasikan CNAMEdata Anda dengan menjalankan dig www.example.com +nostats +nocomments +nocmd. Seharusnya mengembalikan aCNAME YOUR-GITHUB-USERNAME.github.io

Diperlukan waktu sekitar satu jam bagi entri DNS ini untuk menyelesaikan / memperbanyak. Begitu mereka melakukannya, buka browser Anda http://example.comdan itu harus mengarahkan kembali kehttp://www.example.com

Langkah 6: Konfigurasi SSL (HTTPS). Opsional, tetapi sangat dianjurkan

Setelah domain kustom berfungsi, kembali ke pengaturan repo. Jika Anda sudah membuka halaman pengaturan, segarkan halaman tersebut.

Jika ada pesan di bawah Enforce HTTPSkotak centang, menyatakan bahwa itu masih diproses, Anda harus menunggu. Anda juga mungkin perlu menekan savetombol di Custom domainbagian ini untuk memulai Enforce HTTPSpemrosesan.

Setelah pemrosesan selesai, seharusnya akan terlihat seperti ini:

masukkan deskripsi gambar di sini

Cukup klik pada Enforce HTTPSkotak centang, dan arahkan ke browser Anda https://example.com. Ini harus mengarahkan ulang dan terbukahttps://www.example.com

ITU DIA!

GitHub akan secara otomatis menjaga sertifikat HTTPS Anda tetap mutakhir DAN harus menangani apeks untuk wwwmengarahkan ulang melalui HTTPS.

Semoga ini membantu!!

...

Jawaban lama (sebelum 1/23/19)

Jadi saya menemukan jawabannya. James McLaughlin memberi saya dorongan yang saya butuhkan.

Untuk Menyiapkan domain khusus untuk repo Halaman Proyek gh-halaman yang menangani www.domainanda.com dan domainanda.com (menganggap Anda sudah memiliki cabang gh-halaman di repo Anda):

  1. Dari repo proyek Anda, cabang gh-halaman. Buat file CNAME dengan kontennya yourdomain.com. Komit kemudian dorong.
  2. Di manajer DNS Anda, siapkan dua cnamecatatan. Satu untuk apex root (@) dan satu untuk www. Keduanya menunjuk ke YOURusername.github.io. Jika penyedia DNS Anda TIDAK mendukung ALIAScatatan pada apex root (@), cukup buat Acatatan yang mengarah ke 192.30.252.153dan192.30.252.154
  3. Tunggu hingga pembaruan server nama Anda:

    dig yourdomain.com +nostats +nocomments +nocmd

rynop
sumber
14
Pada 19 April 2012, dokumentasi GitHub menggunakan 204.232.175.78sebagai alamat IP.
Aseem Kishore
31
Memeriksa 6 Februari 2014 dan dokumen github mengatakan: Buat catatan DNS A yang mengarah ke alamat IP berikut: 192.30.252.153, 192.30.252.154.
Danny
2
"Jika Anda menggunakan catatan A yang menunjuk ke 207.97.227.245 atau 204.232.175.78, Anda perlu memperbarui pengaturan DNS Anda, karena kami tidak lagi melayani Halaman langsung dari server-server itu." help.github.com/articles/my-custom-domain-isn-t-working - 3/8/14
eddywashere
11
Saya rasa tidak mungkin untuk membuat catatan CNAME dari domain telanjang @. Itu sebabnya Anda membutuhkan catatan A, untuk menangani pengalihan dari domain telanjang ke subdomain www. Ini masalah dengan cloudhost apa pun. Tidak ada jaminan IP tetap.
superluminary
2
@rynop GoDaddy tidak mengizinkan @ dan www ke yourusername.github.io, hanya satu catatan CNAME per subdomain :(
Tejas Manohar
241

Gambaran

The dokumentasi sedikit membingungkan ketika datang ke proyek halaman , sebagai lawan halaman pengguna . Rasanya Anda harus melakukan lebih, tetapi sebenarnya prosesnya sangat mudah.

Ini melibatkan:

  1. Menyiapkan 2 catatan A statis untuk domain telanjang (tanpa www).
  2. Membuat satu catatan CNAME untuk www yang akan mengarah ke URL GitHub. Ini akan menangani pengalihan www untuk Anda.
  3. Membuat file bernama CNAME (dengan huruf besar) di root proyek Anda di cabang gh-pages. Ini akan memberi tahu Github URL apa yang harus ditanggapi.
  4. Tunggu semuanya menyebar.

Apa yang akan Anda dapatkan

Konten Anda akan disajikan dari URL formulir http://nicholasjohnson.com .

Mengunjungi http://www.nicholasjohnson.com akan mengembalikan 301 redirect ke domain telanjang.

Jalur akan dihormati oleh pengalihan, sehingga lalu lintas ke http://www.nicholasjohnson.com/angular akan dialihkan ke http://nicholasjohnson.com/angular .

Anda dapat memiliki satu halaman proyek per repositori, jadi jika repo Anda terbuka, Anda dapat memiliki sebanyak yang Anda suka.

Inilah prosesnya:

1. Buat catatan

Untuk catatan A, arahkan @ ke alamat ip berikut:

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

Ini adalah alamat IP Github statis dari mana konten Anda akan disajikan.

2. Buat Data CNAME

Untuk catatan CNAME, arahkan www ke yourusername.github.io. Perhatikan berhenti penuh trailing. Perhatikan juga, ini adalah nama pengguna, bukan nama proyek . Anda belum perlu menentukan nama proyek. Github akan menggunakan file CNAME untuk menentukan proyek dari mana menyajikan konten.

misalnya

www: forwardadvance.github.io.

Tujuan CNAME adalah untuk mengarahkan ulang semua lalu lintas subdomain www ke halaman GitHub yang akan diarahkan ke domain telanjang.

Berikut screenshot konfigurasi yang saya gunakan untuk situs saya sendiri http://nicholasjohnson.com :

Catatan A dan CNAME diperlukan untuk Halaman Statis Github

3. Buat file CNAME

Tambahkan file bernama CNAME ke root proyek Anda di cabang gh-pages. Ini harus berisi domain yang ingin Anda layani. Pastikan Anda berkomitmen dan mendorong.

misalnya

nicholasjohnson.com

File ini memberi tahu GitHub untuk menggunakan repo ini untuk menangani lalu lintas ke domain ini.

4. Tunggu

Sekarang tunggu 5 menit, halaman proyek Anda sekarang akan tayang.

superluminary
sumber
1
Tidak, domain apex memiliki IP statis. Subdomain www memiliki CNAME.
superluminary
4
@upupumuminary, saya ulangi proses Anda, dan saya punya dua masalah, 1) Saya menggunakan freeDNS takut.org untuk berbagi DNS, yang tidak memungkinkan untuk menambahkan trailing. di username.github.io .. 2) ketika saya menambahkan url github.io tanpa tambahan., mydomain.com berfungsi, tetapi saya tidak dapat mengakses dengan www.mydomain.com ??
bistaumanga
4
Bagian yang saya tidak tahu melalui GitHub docs adalah URL apa yang digunakan untuk proyek. Terima kasih atas jawaban ini: "ini adalah nama pengguna, bukan nama proyek." jadi gunakanyourUserName.github.io.
pkamb
1
Saya telah memperbarui solusi ini dan sangat merekomendasikan melakukannya. Anda dapat membuatnya berfungsi dengan cara lain, misalnya menggunakan CNAME untuk host @, tetapi itu akan merusak email, dll. Ini adalah solusi terbaik yang saya temukan. Terima kasih.
Steven L.
1
Terima kasih! Saya terjebak pada nilai yang benar untuk catatan CNAME di DNS - just organization.github.io, tidak peduli proyek apa di bawah organisasi yang Anda coba layani. (yaitu, BUKAN organization.github.io/repo)
Libby
21

Jika Anda ingin tahu bagaimana membuat domain Anda muncul www.mydomain.comalih-alih mengarahkan kembali wwwpermintaan mydomain.com, coba ini:

File CNAME pada cabang gh-halaman akan memiliki satu baris:

www.mydomain.com(bukannya mydomain.com)

Tidak masalah preferensi Anda pada pengalihan (dengan kata lain, tidak peduli apa yang ada di file CNAME Anda di cabang gs-pages), dengan penyedia DNS Anda, Anda harus mengaturnya seperti ini:

A      @    192.30.252.154
A      @    192.30.252.153
CNAME  www  username.github.io
Phil
sumber
@ zwacky mengapa saya tidak bisa mengarahkan CNAME ke @? mengapa "www.mydomain.com" dan "mydomain.com" harus memilih IP yang berpotensi berbeda?
aaa90210
19

Jawaban singkat

Penjelasan terperinci ini sangat bagus, tetapi kebingungan OP (dan saya) dapat diselesaikan dengan satu kalimat: "DNS langsung ke nama pengguna atau organisasi GitHub Anda , abaikan proyek tertentu, dan tambahkan file CNAME yang sesuai dalam repositori proyek Anda: GitHub akan mengirim DNS yang tepat untuk proyek yang tepat berdasarkan file di tempat penyimpanan . "

Jim Pivarski
sumber
1
Saya tidak tahu apa artinya "mengirim DNS".
ceving
Redirect permintaan DNS, sehingga permintaan HTTP dengan nama domain tertentu mendapatkan dokumen yang tepat sebagai tanggapan.
Jim Pivarski
13

Pada 29 Agustus 2013, dokumentasi Github mengklaim bahwa:

Peringatan: Sub-halaman halaman proyek seperti http://username.github.io/projectname tidak akan dialihkan ke domain khusus proyek.

Amio
sumber
3
Saya bingung mengapa mereka menambahkan perilaku ini. Saya ingin .com saya mengarah ke halaman github, bukan sebaliknya.
Jordan Scales
9
Saya benar-benar bingung dengan ini juga. Seperti yang saya mengerti sekarang, Anda masih bisa mengarahkan situs Anda ke halaman github, tetapi nama pengguna Anda. Tidak apa-apa karena yoursite.com Anda masih akan berfungsi, pastikan untuk memperbarui catatan dns Anda dan tunggu sampai selesai. help.github.com/articles/…
eddywasdi
Ini harus memiliki konsekuensi SEO (Search Engine Optimization) untuk situs web. Google dikatakan menurunkan peringkat hasil konten yang dapat diakses dari banyak domain, yang merupakan salah satu dari beberapa alasan untuk menerapkan pengalihan 301 ("permanen") dari username.github.io/projectnameke www.projectname.com.
BorromeanTidak
3

Hal-hal jauh lebih mudah saat ini!

  1. Perbarui catatan domain Apex (@) Anda ke titik

192.30.252.154

192.30.252.153

  1. Edit bidang domain Custome Anda di pengaturan repo github Anda.

enter image description here

  1. www dan subdomain lainnya dapat diperbarui sebagai CNAME ke domain puncak.
Rafaf Tahsin
sumber
2

Saya baru saja menemukan, setelah sedikit frustrasi, bahwa jika Anda menggunakan PairNIC , yang harus Anda lakukan adalah mengaktifkan pengaturan "Penerusan Web" di bawah "DNS Khusus" dan menyediakan alamat nama pengguna.github.io/project dan itu akan secara otomatis mengatur catatan puncak dan subdomain untuk Anda. Tampaknya melakukan persis apa yang disarankan dalam jawaban yang diterima. Namun, itu tidak akan membiarkan Anda melakukan hal yang sama persis dengan menambahkan catatan secara manual. Sangat aneh. Bagaimanapun, butuh beberapa saat untuk mencari tahu, jadi saya pikir saya akan berbagi untuk menyelamatkan orang lain dari masalah.

Brandon Fosdick
sumber
0

Saya ingin membagikan langkah-langkah saya yang sedikit berbeda dengan apa yang ditawarkan oleh rynop dan superluminary .

  • untuk A Record persis sama tetapi
  • alih-alih membuat CNAMEuntuk wwwsaya lebih suka mengarahkan ulang ke domain kosong saya ( non-www)

Konfigurasi ini mengacu pada panduan domain pilihan . Pengaturan domain wwwke non wwwatau sebaliknya bisa berbeda pada masing-masing penyedia domain. Karena domain saya di bawah GoDaddy, maka di bawah Pengaturan Domain saya mengaturnya menggunakan Subdomain Forwarding (301).

Sebagai hasil dari mengarahkan domain ke repositori Github, itu kemudian akan memberikan semua URL untuk keduanya masterdangh-pages cabang yang serupa seperti yang saya daftarkan di bawah ini menuju ke domain yang disukai:

menguasai

Dengan membuat CNAMEfile di mastercabang (periksa di repositori pengguna saya ).

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

halaman gh

Dengan membuat CNAMEfile yang sama di gh-pagescabang (periksa di repositori proyek saya ).

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

Sebagai tambahan dari CNAMEfile di atas, Anda mungkin perlu mem-bypass sepenuhnya pemrosesan Jekyll di GitHub Pages dengan membuat file bernama .nojekylldi root repo halaman Anda.

Chetabahana
sumber
3
Saya akan merekomendasikan untuk tidak menggunakan godaddy, tetapi hanya pendapat pribadi
MMachinegun