Спеціальний домен для сторінок проекту GitHub


436

У мене є gh-pagesвідділення в одному з моїх репортажів http://github.com . Сторінки проекту GitHub чудово працюють, якщо я перейду на сторінку http://myuser.github.com/myrepo

Я хочу встановити спеціальний домен (myexample.com), який обслуговуватиме ці сторінки сторінок. Я хочу обох myexample.com і www.myexample.comобслуговувати ці сторінки проектів.

Сторінки GitHub допомагають записати запис A і CNAME у вашій DNS. Запис має сенс, але я не знаю, який запис CNAME робити в моєму DNS.

У gh-pagesдокументах кажуть , щоб зробити CNAMEзапис для «charlie.github.com» , який є вмістилищем сторінки користувача. У мене немає сховища сторінок користувачів - у мене є лише сховище проектів і gh-pagesгілка, яку я хочу використовувати myexample.comі для www.myexample.com.

Чи потрібно мені створити сховище сторінки користувача лише для того, щоб я міг використовувати свою сторінку проекту для www.myexample.com та myexample.com?

Я б просто спробував це, але хочу переконатися, що це спрацює, оскільки я вже маю www.myexample.com в прямому ефірі, і не хочу помилитися.

Я надіслав електронною поштою підтримку GitHub, і їх відповідь була

Наскільки я не можу вказати обидві вказівки на однакові gh-сторінки.

Мені важко повірити, що вони підтримуватимуть записи A лише для сторінок проекту.

Хтось успішно робив це раніше?


10
Я створив lacewing-project.org із записом A, що вказує на 207.97.227.245 (немає записів CNAME), і він працює чудово. Я також помістив файл під назвою CNAME в корінь гілки gh-pages, що містить доменне ім'я.
Джеймс Маклафлін

У моєму випадку, просто розміщення файлу CNAME у відділенні gh-pages зробило трюк, дякую!
jarandaf

Відповіді:


522

ОНОВЛЕННЯ 1/23/19:

З моєї останньої відповіді все змінилося досить сильно (на краще). Ця оновлена ​​відповідь покаже вам, як налаштувати:

  1. Кореневий верхівка (example.com)
  2. Піддомен (www.example.com)
  3. HTTPS (необов’язково, але настійно рекомендується)

Зрештою, всі запити на example.comпереадресацію будуть перенаправлені на https://www.example.com (або http: // якщо ви вирішите НЕ використовувати HTTPS). Я завжди використовую wwwяк свою остаточну посадку. Чому ( 1 , 2 ), для іншого обговорення.

Ця відповідь довга, але вона не є складною. Я був багатослівним для ясності, оскільки документи GitHub на цю тему не зрозумілі або лінійні.

Крок 1. Увімкніть сторінки GitHub у налаштуваннях GitHub

  1. Від репо, натисніть на вкладку
  2. Прокрутіть униз до GitHub Pagesрозділу. У вас є два варіанти:
  3. Вибір master branchвважатиметься /README.mdвашою веб-сторінкою index.html. Вибір master branch /docs folderвважатиметься /docs/README.mdвашою веб-сторінкою index.html.
  4. Виберіть тему.
  5. Зачекайте хвилину, поки GitHub опублікує ваш сайт. Перевірте, чи працює він, натиснувши посилання поручYour site is ready to be published at

Крок 2: Вкажіть спеціальний домен у налаштуваннях GitHub

Введіть тут своє доменне ім’я та натисніть save:

Це тонкий, але важливий крок.

  • Якщо користувацький домен, який ви додали на свій сайт GitHub Pages, є example.com, тоді www.example.comбуде переспрямовано наexample.com
  • Якщо користувацький домен, який ви додали на свій сайт GitHub Pages, є www.example.com, тоді example.comбуде переспрямовано на www.example.com.

Як вже згадувалося раніше, я рекомендую завжди приземлятися, wwwщоб я ввійшов, www.example.comяк зображено вище.

Крок 3: Створіть записи DNS

У веб-консолі постачальника послуг DNS створіть чотири Aзаписи та одну CNAME.

  1. AЗаписи для @(aka root apex):

Деякі постачальники DNS дадуть вам вказати @, а інші (наприклад, AWS Route 53) залиште субдомен порожнім, щоб вказати @. У будь-якому випадку, вони є Aзаписи для створення:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
  1. Створіть CNAMEзапис, на який слід вказати www.example.com YOUR-GITHUB-USERNAME.github.io.

Це найбільш заплутана частина.

Зверніть увагу на YOUR-GITHUB-USERNAME НЕ ім'я репо GitHub! Значення YOUR-GITHUB-USERNAMEвизначається цією діаграмою .

Для сайту сторінок Користувача (швидше за все, який ви є), CNAMEбуде запис username.github.io, наприклад:

На сайті сторінок ОрганізаціїCNAME записом буде orgname.github.io, наприклад:

Крок 5: Підтвердьте записи DNS

  1. Підтвердьте свої Aзаписи, запустивши dig +noall +answer example.com. Він повинен повернути чотири 185.x.x.xIP-адреси, які ви ввели.

  2. Підтверджує ваш CNAMEзапис запуском dig www.example.com +nostats +nocomments +nocmd. Він повинен повернути aCNAME YOUR-GITHUB-USERNAME.github.io

Щоб вирішити / поширити ці записи DNS, може знадобитися година або близько того. Після цього відкрийте веб-переглядач http://example.comі він повинен перенаправити наhttp://www.example.com

Крок 6: Конфігурація SSL (HTTPS). Необов’язково, але дуже рекомендується

Після роботи користувальницького домену поверніться до налаштувань репо. Якщо у вас уже відкрита сторінка налаштувань, важко оновіть сторінку.

Якщо під Enforce HTTPSполем з’явиться повідомлення про те, що воно все ще обробляється, вам потрібно буде почекати. Вам також може знадобитися натиснути saveкнопку в Custom domainрозділі, щоб розпочати Enforce HTTPSобробку.

Як тільки обробка завершена, вона повинна виглядати приблизно так:

введіть тут опис зображення

Просто натисніть на Enforce HTTPSпрапорець і вкажіть свій веб-переглядач https://example.com. Він повинен перенаправлятись і відкриватисяhttps://www.example.com

ЦЕ ВОНО!

GitHub автоматично оновлюватиме ваш сертифікат HTTPS та повинен обробляти вершину для wwwпереадресації через HTTPS.

Сподіваюся, це допомагає !!

...

Стара відповідь (до 23.01.19 р.) Відповідь

Тож я зрозумів це. Джеймс Маклафлін дав мені нудьгу, яка мені потрібна.

Щоб налаштувати спеціальний домен для репо-сторінок проекту gh-pages, який обробляє www.yourdomain.com та yourdomain.com (передбачається, що у вас вже є відділення gh-сторінок у вашому репо):

  1. З вашого репо проекту, відділення gh-pages. Створіть файл CNAME із вмістом yourdomain.com. Зробіть, тоді натисніть.
  2. У своєму DNS-менеджері встановіть два cnameзаписи. Один для кореневої вершини (@) і один для www. Обидва вказують на YOURusername.github.io. Якщо ваш постачальник DNS НЕ підтримує ALIASзаписи на кореневій вершині (@), просто створіть Aзаписи, які вказують на 192.30.252.153та192.30.252.154
  3. Зачекайте, поки оновлення ваших серверів імен:

    dig yourdomain.com +nostats +nocomments +nocmd


14
Станом на 19 квітня 2012 року , документація GitHub використовується 204.232.175.78як IP-адреса.
Асеем Кішор

31
Перевірено feb 6th 2014 та github docs кажуть: Створіть записи DNS A, які вказують на такі IP адреси: 192.30.252.153, 192.30.252.154.
Денні

2
"Якщо ви використовуєте запис A, який вказує на 207.97.227.245 або 204.232.175.78, вам потрібно буде оновити налаштування DNS, оскільки ми більше не обслуговуємо Сторінки безпосередньо з цих серверів." help.github.com/articles/my-custom-domain-isn-t-working - 3/8/14
eddywashere

11
Я не думаю, що встановити запис CNAME неможливо з голого @ домену. Ось чому вам потрібні записи A для обробки переадресації з голого домену на піддомен www. Це проблема з будь-яким хмарним хостом. Немає гарантії фіксованого IP.
надсвітні

2
@rynop GoDaddy не дозволяє @ та www на yourusername.github.io, лише один запис CNAME на субдомен :(
Tejas Manohar

241

Огляд

Документація трохи заплутаним , коли справа доходить до проекту сторінок , на відміну від призначених для користувача сторінок . Схоже, вам доведеться зробити більше, але насправді процес дуже простий.

Він включає:

  1. Налаштування 2 статичних записів A для голого (без www) домену.
  2. Створення одного запису CNAME для www, який вказуватиме на URL-адресу GitHub. Це допоможе вам перенаправити www.
  3. Створення файлу під назвою CNAME (з великої літери) у корені проекту на гілці gh-сторінок. Це підкаже Github, на яку URL-адресу потрібно відповісти.
  4. Зачекайте, поки все пошириться.

Що ви отримаєте

Ваш вміст подаватиметься з URL-адреси форми http://nicholasjohnson.com .

Відвідавши http://www.nicholasjohnson.com , повернеться 301 переспрямування на голий домен.

Шлях буде дотримано перенаправленням, тому трафік до http://www.nicholasjohnson.com/angular буде переспрямовано на http://nicholasjohnson.com/angular .

Ви можете мати одну сторінку проекту на сховище, тож якщо ваші репортажі відкриті, ви можете мати скільки завгодно.

Ось процес:

1. Створіть записи

Для записів A вкажіть @ на наступні ip адреси:

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

Це статичні IP-адреси Github, з яких буде розміщено ваш вміст.

2. Створіть запис CNAME

Для запису CNAME вкажіть www на yourusername.github.io. Зверніть увагу на повну зупинку. Зауважте також, що це ім'я користувача, а не ім'я проекту . Вам ще не потрібно вказувати назву проекту. Github використовуватиме файл CNAME, щоб визначити, з якого проекту подавати вміст.

напр

www: forwardadvance.github.io.

Мета CNAME - перенаправити весь веб-трафік субдомену на сторінку GitHub, яка перенаправить 301 на голий домен.

Ось скріншот конфігурації, яку я використовую для свого власного сайту http://nicholasjohnson.com :

Записи A та CNAME, необхідні для статичних сторінок Github

3. Створіть файл CNAME

Додайте файл під назвою CNAME до кореня проекту у відділенні gh-pages. Він повинен містити домен, який ви хочете обслуговувати. Переконайтеся, що ви вчиняєте та натискаєте.

напр

nicholasjohnson.com

Цей файл повідомляє GitHub використовувати цей репо-обмін для обробки трафіку на цьому домені.

4. Зачекайте

Тепер зачекайте 5 хвилин, ваша сторінка проекту тепер повинна бути опублікована.


1
Ні, домен вершини має статичний IP. Піддомен www має CNAME.
суперлюмінація

4
@superluminary, я повторив ваш процес, і у мене є дві проблеми, 1) Я використовую freeDNS boji.org для обміну DNS, що не дозволяє додавати трейлінг. in username.github.io .. 2) коли я додав URL-адресу github.io без закінчення., mydomain.com працює, але я не можу отримати доступ до www.mydomain.com ??
bistaumanga

4
Частина, яку я не міг розібратися через документи GitHub, полягала в тому, яку URL-адресу використовувати для проекту. Дякуємо за цю відповідь: "це ім'я користувача, а не ім'я проекту". тому використовуйтеyourUserName.github.io.
pkamb

1
Я оновив це рішення і дуже рекомендую його робити. Ви можете змусити його працювати іншими способами, наприклад, використовуючи CNAME для хоста @, але він порушить електронну пошту тощо. Це найкраще рішення, яке я знайшов. Дякую.
Стівен Л.

1
Дякую! Мене затримали правильне значення запису CNAME в DNS - просто organization.github.io, незалежно від того, який проект у цій організації ви намагаєтеся обслуговувати. (тобто НЕ organization.github.io/repo)
Ліббі

21

Якщо вам цікаво, як зробити так, щоб ваш домен відображався як www.mydomain.comзамість перенаправлення wwwзапиту mydomain.com, спробуйте:

Файл CNAME у відділенні gh-сторінок матиме один рядок:

www.mydomain.com(замість mydomain.com)

Незалежно від вашого уподобання по перенаправлення (іншими словами, незалежно від того , що знаходиться в файлі CNAME на гілці GS-сторінок), з вашим провайдером DNS , ви повинні налаштувати його так:

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

@zwacky Чому я не можу просто вказати CNAME на @? Чому "www.mydomain.com" та "mydomain.com" повинні вирішуватись для потенційно різних IP-адрес?
aaa90210

19

Коротка відповідь

Ці детальні пояснення чудові, але плутанина ОП (і моя) може бути вирішена одним пропозицією: "Прямий DNS до вашого імені користувача або організації GitHub , ігноруючи конкретний проект, і додайте відповідні файли CNAME у ваші сховища проекту: GitHub надішле правильний проект DNS направо на основі файлів у сховищі. "


1
Я поняття не маю, що означає "відправлення DNS".
закінчення

Перенаправляйте запити DNS, щоб HTTP-запити з певними доменними іменами отримували потрібні документи як відповіді.
Джим Піварський

13

Станом на 29 серпня 2013 року в документації Github стверджується, що:

Попередження: Підпункти сторінок проекту, такі як http://username.github.io/projectname , не будуть перенаправлені на користувацький домен проекту.


3
Мене бентежить, чому вони додали таку поведінку. Я хочу, щоб мій .com вказував на сторінки github, а не навпаки.
Йорданські ваги

9
Я теж дуже збентежився цим. Як я зараз це розумію, ви все ще можете вказати на сайт vašite.com на сторінки github, але yourusername.github.io/yoursite не переспрямовуватиметься на сайт yourite.com. Це добре, тому що vašiteite.com все ще працюватиме, просто переконайтеся, що ви оновите свої записи dns і дочекайтеся, коли це вирішиться. help.github.com/articles/…
eddywashere

Це має мати SEO (оптимізацію пошукових систем) наслідків для веб-сайту. Google, як кажуть, знижує рейтинг результатів вмісту, доступного з декількох доменів, що є однією з декількох причин застосування 301 ("постійних") переадресацій з username.github.io/projectnameна www.projectname.com.
BorromeanNot

3

Зараз набагато простіше!

  1. Оновіть запис домену Apex (@) до точки

192.30.252.154

192.30.252.153

  1. Відредагуйте поле свого домену Custome у налаштуваннях рефінансування github.

enter image description here

  1. www та інші субдомени можуть бути оновлені як CNAME до вершинного домену.

2

Щойно я засвідчивши , що я розчарував, що якщо ви використовуєте PairNIC , все, що вам потрібно зробити, це ввімкнути налаштування "Веб-переадресація" в розділі "Спеціальний DNS" та ввести адресу username.github.io/project, і це буде автоматично налаштувати для вас записи верхівки і піддомену. Здається, робити саме те, що запропоновано у прийнятій відповіді. Однак це не дозволить вам зробити те саме, вручну додаючи записи. Дуже дивно. У будь-якому випадку мені знадобилося певний час, щоб зрозуміти це, тому я подумав, що хочу врятувати всі інші проблеми.


0

Я хотів би розділити мої кроки , які трохи відрізняються від того, що пропонують rynop і superluminary .

  • для ARecord точно така ж, але
  • замість створення CNAMEдля цього wwwя вважаю за краще переспрямувати його на мій порожній домен ( non-www)

Ця конфігурація посилається на вказівки щодо кращого домену . Налаштування домену wwwдля non wwwабо навпаки може відрізнятися від кожного з постачальників послуг хостингу. Оскільки мій домен знаходиться під GoDaddy, то в розділі Налаштування домену я його встановлюю за допомогою переадресації субдомену (301).

У результаті вказівки домену на сховище Github, воно надасть всі URL-адреси для обох masterта gh-pagesгілок, подібних до тих, які я перераховано нижче, перейде до бажаного домену:

майстер

Створивши CNAMEфайл у masterвідділенні (перевірте його у моєму репозитарії користувача ).

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

gh-сторінки

Створивши той самий CNAMEфайл у gh-pagesвідділенні (перевірте його у моєму сховищі проектів ).

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

На додаток до CNAMEвищенаведеного файлу, можливо, вам доведеться повністю обійти обробку Jekyll на сторінках GitHub, створивши файл, названий .nojekyllу корені репо-сторінки.


3
Я рекомендував би не використовувати godaddy, а лише особисту думку
MMachinegun
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.