Tên miền tùy chỉnh cho các trang dự án GitHub


434

Tôi có một gh-pageschi nhánh tại một trong những repos http://github.com của tôi . Các trang dự án GitHub hoạt động tốt nếu tôi truy cập http://myuser.github.com/myrepo

Tôi muốn thiết lập một miền tùy chỉnh (myexample.com) sẽ phục vụ các trang dự án này. Tôi muốn cả hai myexample.comwww.myexample.comđể phục vụ lên các trang dự án.

Các trang GitHub giúp nói để tạo một bản ghi A và bản ghi CNAME trong DNS của bạn. Bản ghi A có ý nghĩa, nhưng tôi không biết bản ghi CNAME sẽ tạo trong DNS của mình.

Các gh-pagestài liệu nói để tạo một CNAMEbản ghi cho 'charlie.github.com' là kho lưu trữ trang người dùng. Tôi không có kho lưu trữ trang người dùng - Tôi chỉ có một kho dự án và một gh-pagesnhánh mà tôi muốn sử dụng cho myexample.comwww.myexample.com.

Tôi có cần tạo kho lưu trữ trang người dùng để tôi có thể sử dụng trang dự án của mình cho www.myexample.com và myexample.com không?

Tôi sẽ thử nó, nhưng tôi muốn chắc chắn rằng nó sẽ hoạt động vì tôi đã có www.myexample.com trực tiếp và không muốn phạm sai lầm.

Tôi đã gửi email cho bộ phận hỗ trợ của GitHub và phản hồi của họ là

Bạn không thể có cả hai điểm đến cùng một trang gh như tôi biết.

Tôi thấy khó tin rằng họ sẽ chỉ hỗ trợ hồ sơ A cho các trang dự án.

Có ai đã làm thành công điều này trước đây?


10
Tôi đã thiết lập lacewing-project.org chỉ với một bản ghi A chỉ vào 207.97.227.245 (không có bản ghi CNAME) và nó hoạt động tốt. Tôi cũng đặt một tệp có tên CNAME trong thư mục gốc của nhánh gh-page có chứa tên miền.
James McLaughlin

Trong trường hợp của tôi, chỉ cần đặt tệp CNAME trong nhánh gh-page đã thực hiện thủ thuật này, cảm ơn bạn!
jarandaf

Câu trả lời:


521

1/23/19 CẬP NHẬT:

Mọi thứ đã thay đổi khá nhiều (cho tốt hơn) kể từ câu trả lời cuối cùng của tôi. Câu trả lời cập nhật này sẽ chỉ cho bạn cách định cấu hình:

  1. Root gốc (example.com)
  2. Tên miền phụ (www.example.com)
  3. HTTPS (tùy chọn nhưng được khuyến khích mạnh mẽ)

Cuối cùng, tất cả các yêu cầu example.comsẽ được chuyển hướng đến https://www.example.com (hoặc http: // nếu bạn chọn KHÔNG sử dụng HTTPS). Tôi luôn luôn sử dụng wwwnhư hạ cánh cuối cùng của tôi. Tại sao ( 1 , 2 ), là cho một cuộc thảo luận khác.

Câu trả lời này dài nhưng không phức tạp. Tôi đã tiết lộ cho sự rõ ràng vì các tài liệu GitHub về chủ đề này không rõ ràng hoặc tuyến tính.

Bước 1: Kích hoạt trang GitHub trong cài đặt GitHub

  1. Từ repo của bạn, nhấp vào tab
  2. Cuộn xuống GitHub Pagesphần. Bạn có hai lựa chọn:
  3. Lựa chọn master branchsẽ coi /README.mdnhư web của bạn index.html. Lựa chọn master branch /docs foldersẽ coi /docs/README.mdnhư web của bạn index.html.
  4. Chọn một chủ đề.
  5. Đợi một chút trong khi GitHub xuất bản trang web của bạn. Xác minh nó hoạt động bằng cách nhấp vào liên kết bên cạnhYour site is ready to be published at

Bước 2: Chỉ định miền tùy chỉnh trong cài đặt GitHub

Nhập tên miền tùy chỉnh của bạn ở đây và nhấn save:

Đây là một bước tinh tế, nhưng quan trọng.

  • Nếu tên miền tùy chỉnh bạn đã thêm vào trang GitHub Pages của mình example.comthì www.example.comsẽ chuyển hướng đếnexample.com
  • Nếu tên miền tùy chỉnh bạn đã thêm vào trang GitHub Pages của mình www.example.comthì example.comsẽ chuyển hướng đến www.example.com.

Như đã đề cập trước đó, tôi khuyên bạn nên luôn hạ cánh wwwđể tôi nhập www.example.comnhư hình trên.

Bước 3: Tạo các mục DNS

Trong bảng điều khiển web của nhà cung cấp DNS của bạn, tạo bốn Abản ghi và một bản ghi CNAME.

  1. ABản ghi cho @(còn gọi là root apex):

Một số nhà cung cấp DNS sẽ yêu cầu bạn chỉ định @, những người khác (như AWS Route 53) bạn sẽ để trống tên miền phụ để chỉ ra @. Trong cả hai trường hợp, đây là những Abản ghi để tạo:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
  1. Tạo một CNAMEbản ghi để trỏ www.example.com tới YOUR-GITHUB-USERNAME.github.io.

Đây là phần khó hiểu nhất.

Lưu ý YOUR-GITHUB-USERNAME KHÔNG phải tên repo GitHub! Giá trị của YOUR-GITHUB-USERNAMEđược xác định bởi biểu đồ này .

Đối với trang của trang Người dùng (rất có thể là bạn), CNAMEmục nhập sẽ là username.github.io, ví dụ:

Đối với trang web của Tổ chức , CNAMEmục nhập sẽ là orgname.github.io, ví dụ:

Bước 5: Xác nhận các mục DNS

  1. Xác nhận Ahồ sơ của bạn bằng cách chạy dig +noall +answer example.com. Nó sẽ trả về bốn 185.x.x.xđịa chỉ IP bạn đã nhập.

  2. Xác nhận CNAMEhồ sơ của bạn bằng cách chạy dig www.example.com +nostats +nocomments +nocmd. Nó sẽ trả lại mộtCNAME YOUR-GITHUB-USERNAME.github.io

Có thể mất một giờ hoặc lâu hơn để các mục DNS này giải quyết / tuyên truyền. Khi họ thực hiện, hãy mở trình duyệt của bạn lên http://example.comvà nó sẽ chuyển hướng đếnhttp://www.example.com

Bước 6: Cấu hình SSL (HTTPS). Tùy chọn, nhưng rất khuyến khích

Sau khi bạn có miền tùy chỉnh hoạt động, quay lại cài đặt repo. Nếu bạn đã mở trang cài đặt, hãy làm mới trang.

Nếu có một thông báo dưới Enforce HTTPShộp kiểm, nói rằng nó vẫn đang xử lý, bạn sẽ cần chờ. Bạn cũng có thể cần nhấn savenút trong Custom domainphần để bắt đầu Enforce HTTPSxử lý.

Sau khi xử lý hoàn tất, nó sẽ trông như thế này:

nhập mô tả hình ảnh ở đây

Chỉ cần nhấp vào Enforce HTTPShộp kiểm và trỏ trình duyệt của bạn đến https://example.com. Nó sẽ trực tiếp và mởhttps://www.example.com

ĐÓ LÀ NÓ!

GitHub sẽ tự động cập nhật chứng chỉ HTTPS của bạn VÀ nên xử lý đỉnh để wwwchuyển hướng qua HTTPS.

Hi vọng điêu nay co ich!!

...

Câu trả lời cũ (trước ngày 1/2/19)

Vì vậy, tôi đã tìm ra nó. James McLaughlin đã cho tôi tiếng nũng nịu tôi cần.

Để thiết lập tên miền tùy chỉnh cho repo Trang dự án gh-xử lý www.yourdomain.com và yourdomain.com (giả sử bạn đã có chi nhánh gh-page trên repo của mình):

  1. Từ repo dự án của bạn, chi nhánh gh-page. Tạo một tệp CNAME với nội dung yourdomain.com. Cam kết rồi đẩy.
  2. Trong trình quản lý DNS của bạn, hãy thiết lập hai cnamebản ghi. Một cho apex gốc (@) và một cho www. Cả hai chỉ vào YOURusername.github.io. Nếu nhà cung cấp DNS của bạn KHÔNG hỗ trợ ALIAScác bản ghi trên apex gốc (@), chỉ cần tạo Acác bản ghi trỏ đến 192.30.252.153192.30.252.154
  3. Đợi đến khi cập nhật máy chủ tên của bạn:

    dig yourdomain.com +nostats +nocomments +nocmd


14
Kể từ ngày 19 tháng 4 năm 2012, tài liệu của GitHub sử dụng 204.232.175.78làm địa chỉ IP.
Aseem Kishore

31
Đã kiểm tra feb ngày 6 năm 2014 và các tài liệu github cho biết: Tạo bản ghi DNS A trỏ đến các địa chỉ IP sau: 192.30.252.153, 192.30.252.154.
Danny

2
"Nếu bạn đang sử dụng bản ghi A trỏ đến 207.97.227.245 hoặc 204.232.175.78, bạn sẽ cần cập nhật cài đặt DNS của mình, vì chúng tôi không còn phục vụ Trang trực tiếp từ các máy chủ đó nữa." help.github.com/articles/my-custom-domain-isn-t- làm việc - 3/8/14
eddywashere

11
Tôi không nghĩ có thể thiết lập bản ghi CNAME từ tên miền @ trần trụi. Đó là lý do tại sao bạn cần các bản ghi A, để xử lý chuyển hướng từ tên miền trần sang tên miền phụ www. Đó là một vấn đề với bất kỳ cloudhost. Không đảm bảo IP cố định.
siêu sáng

2
@rynop GoDaddy không cho phép @ và www vào yourusername.github.io, chỉ một bản ghi CNAME cho mỗi tên miền phụ :(
Tejas Manohar

241

Tổng quat

Các tài liệu là một chút bối rối khi nói đến trang dự án , như trái ngược với các trang sử dụng . Cảm giác như bạn cần phải làm nhiều hơn, nhưng thực sự quá trình này rất dễ dàng.

Nó bao gồm:

  1. Thiết lập 2 bản ghi A tĩnh cho miền trần (không có www).
  2. Tạo một bản ghi CNAME cho www sẽ trỏ đến URL GitHub. Điều này sẽ xử lý chuyển hướng www cho bạn.
  3. Tạo một tệp có tên CNAME (viết hoa) trong gốc dự án của bạn trên nhánh gh-page. Điều này sẽ cho Github biết URL nào sẽ phản hồi.
  4. Chờ mọi thứ tuyên truyền.

Bạn sẽ nhận được gì

Nội dung của bạn sẽ được phục vụ từ một URL có dạng http://nicholasjohnson.com .

Truy cập http://www.nicholasjohnson.com sẽ trả về chuyển hướng 301 đến miền trần.

Đường dẫn sẽ được tôn trọng bởi chuyển hướng, vì vậy lưu lượng truy cập đến http://www.nicholasjohnson.com/angular sẽ được chuyển hướng đến http://nicholasjohnson.com/angular .

Bạn có thể có một trang dự án trên mỗi kho lưu trữ, vì vậy nếu kho của bạn được mở, bạn có thể có bao nhiêu tùy thích.

Đây là quá trình:

1. Tạo bản ghi A

Đối với các bản ghi A, trỏ @ đến các địa chỉ IP sau:

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

Đây là các địa chỉ IP Github tĩnh mà từ đó nội dung của bạn sẽ được phục vụ.

2. Tạo Bản ghi CNAME

Đối với bản ghi CNAME, hãy trỏ www đến yourusername.github.io. Lưu ý dấu dừng đầy đủ. Cũng lưu ý, đây là tên người dùng, không phải tên dự án . Bạn không cần chỉ định tên dự án. Github sẽ sử dụng tệp CNAME để xác định dự án nào sẽ phục vụ nội dung từ đó.

ví dụ

www: forwardadvance.github.io.

Mục đích của CNAME là chuyển hướng tất cả lưu lượng truy cập tên miền www sang trang GitHub sẽ chuyển hướng 301 sang miền trần.

Đây là một ảnh chụp màn hình của cấu hình tôi sử dụng cho trang web của riêng mình http://nicholasjohnson.com :

Bản ghi A và CNAME cần thiết cho Trang tĩnh Github

3. Tạo tệp CNAME

Thêm một tệp có tên CNAME vào gốc dự án của bạn trong nhánh gh-page. Điều này sẽ chứa tên miền bạn muốn phục vụ. Hãy chắc chắn rằng bạn cam kết và đẩy.

ví dụ

nicholasjohnson.com

Tệp này báo cho GitHub sử dụng repo này để xử lý lưu lượng truy cập vào miền này.

4. Đợi đã

Bây giờ hãy đợi 5 phút, trang dự án của bạn sẽ hoạt động.


1
Không, miền apex có IP tĩnh. Tên miền phụ www có CNAME.
siêu sáng

4
@superluminary, tôi đã lặp lại quy trình của bạn và tôi có hai vấn đề, 1) Tôi đang sử dụng freeDNS e ngại.org để chia sẻ DNS, không cho phép thêm dấu vết. trong username.github.io .. 2) khi tôi thêm url github.io mà không theo dõi., mydomain.com đang hoạt động, nhưng tôi không thể truy cập vào www.mydomain.com ??
bistaumanga

4
Phần mà tôi không thể tìm ra thông qua các tài liệu GitHub là URL nào sẽ được sử dụng cho dự án. Cảm ơn câu trả lời này: "đây là tên người dùng, không phải tên dự án." vì vậy hãy sử dụngyourUserName.github.io.
pkamb

1
Tôi đã cập nhật giải pháp này và thực sự khuyên bạn nên làm điều đó. Bạn có thể làm cho nó hoạt động theo những cách khác, ví dụ như sử dụng CNAME cho máy chủ @, nhưng nó sẽ phá vỡ e-mail, v.v ... Đây là giải pháp tốt nhất tôi đã tìm thấy. Cảm ơn bạn.
Steven L.

1
Cảm ơn bạn! Tôi đã bị kẹt với giá trị chính xác cho bản ghi CNAME trong DNS - chỉ tổ chức.github.io, bất kể dự án nào thuộc tổ chức đó mà bạn đang cố gắng phục vụ. (tức là KHÔNG tổ
Libby

21

Nếu bạn đang tự hỏi làm thế nào để tên miền của mình xuất hiện www.mydomain.comthay vì chuyển hướng wwwyêu cầu đến mydomain.com, hãy thử điều này:

Tệp CNAME trên nhánh gh-page sẽ có một dòng:

www.mydomain.com(thay vì mydomain.com)

Bất kể sở thích của bạn về chuyển hướng (nói cách khác, bất kể điều gì trong tệp CNAME của bạn trên nhánh gs-page), với nhà cung cấp DNS của bạn , bạn nên thiết lập nó như sau:

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

@zwacky tại sao tôi không thể chỉ CNAME tại @? tại sao "www.mydomain.com" và "mydomain.com" giải quyết các IP có khả năng khác nhau?
aaa90210

19

Câu trả lời ngắn

Những giải thích chi tiết này rất hay, nhưng sự nhầm lẫn của OP (và của tôi) có thể được giải quyết bằng một câu: "DNS trực tiếp đến tên người dùng hoặc tổ chức GitHub của bạn , bỏ qua dự án cụ thể và thêm các tệp CNAME thích hợp trong kho dự án của bạn: GitHub sẽ gửi DNS bên phải cho dự án phù hợp dựa trên các tệp trong kho lưu trữ . "


1
Tôi không biết "gửi DNS" nghĩa là gì.
ceving

Chuyển hướng truy vấn DNS, để các yêu cầu HTTP có tên miền cụ thể có được tài liệu phù hợp làm phản hồi.
Jim Pivarski

13

Kể từ ngày 29 tháng 8 năm 2013, tài liệu của Github tuyên bố rằng:

Cảnh báo: Các trang con của dự án như http://username.github.io/projectname sẽ không được chuyển hướng đến miền tùy chỉnh của dự án.


3
Tôi bối rối tại sao họ thêm hành vi này. Tôi muốn .com của tôi trỏ đến các trang github, không phải cách khác.
Jordan Scales

9
Tôi thực sự bối rối bởi điều này quá. Bây giờ tôi đã hiểu, bạn vẫn có thể trỏ yoursite.com đến các trang github, nhưng yourusername.github.io/yoursite sẽ không chuyển hướng đến yoursite.com. Điều đó tốt bởi vì yoursite.com vẫn sẽ hoạt động, chỉ cần đảm bảo cập nhật hồ sơ dns của bạn và chờ đợi điều đó được giải quyết. help.github.com/articles/ từ
eddywashere

Điều này nên có phân nhánh SEO (Tối ưu hóa công cụ tìm kiếm) cho trang web. Google được cho là hạ cấp xếp hạng kết quả của nội dung có thể truy cập được từ nhiều tên miền, đây là một trong nhiều lý do để áp dụng chuyển hướng 301 ("vĩnh viễn") từ username.github.io/projectnamesang www.projectname.com.
BorromeanNot

3

Mọi thứ ngày nay dễ dàng hơn nhiều!

  1. Cập nhật bản ghi tên miền Apex (@) của bạn thành điểm

192.30.252.154

192.30.252.153

  1. Chỉnh sửa trường miền Custome của bạn trong cài đặt repo github của bạn.

enter image description here

  1. www và các tên miền phụ khác có thể được cập nhật dưới dạng CNAME thành tên miền apex.

2

Tôi vừa phát hiện ra, sau một chút thất vọng, rằng nếu bạn đang sử dụng PairNIC , tất cả những gì bạn phải làm là bật cài đặt "Chuyển tiếp web" trong "DNS tùy chỉnh" và cung cấp địa chỉ username.github.io/project và nó sẽ tự động thiết lập cả bản ghi apex và tên miền phụ cho bạn. Nó xuất hiện để làm chính xác những gì được đề xuất trong câu trả lời được chấp nhận. Tuy nhiên, nó sẽ không cho phép bạn làm điều tương tự bằng cách thêm các bản ghi thủ công. Rất lạ. Dù sao, tôi phải mất một thời gian để tìm ra điều đó, vì vậy tôi nghĩ tôi sẽ chia sẻ để cứu những người khác gặp rắc rối.


0

Tôi muốn chia sẻ các bước của tôi khác một chút so với những gì được cung cấp bởi rynopsuperluminary .

  • cho ARecord hoàn toàn giống nhau nhưng
  • thay vì tạo CNAMEcho wwwtôi, tôi muốn chuyển hướng nó đến miền trống của tôi ( non-www)

Cấu hình này đề cập đến hướng dẫn của tên miền ưa thích . Bối cảnh lĩnh vực wwwđể non wwwhoặc vise lại có thể khác nhau về từng nhà cung cấp tên miền. Vì tên miền của tôi nằm dưới GoDaddy, nên trong Cài đặt tên miền, tôi đặt tên miền bằng Chuyển tiếp tên miền con (301).

Do kết quả của việc trỏ tên miền vào kho lưu trữ Github, sau đó nó sẽ cung cấp tất cả các URL cho cả hai mastergh-pagesnhánh tương tự như các tên miền tôi liệt kê dưới đây đi đến tên miền ưa thích:

bậc thầy

Bằng cách tạo CNAMEtệp trên masternhánh (kiểm tra nó trên kho lưu trữ người dùng của tôi ).

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

trang gh

Bằng cách tạo cùng một CNAMEtệp trên gh-pagesnhánh (kiểm tra nó trên kho dự án của tôi ).

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

Ngoài CNAMEtệp ở trên, bạn có thể cần phải bỏ qua hoàn toàn việc xử lý Jekyll trên Trang GitHub bằng cách tạo một tệp có tên .nojekylltrong thư mục gốc của trang repo.


3
Tôi khuyên bạn không nên sử dụng godaddy, mà chỉ là ý kiến ​​cá nhân
MMachinegun
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.