301 редирект для сайта, размещенного на github? - PullRequest
46 голосов
/ 14 февраля 2012

Вот мой репозиторий Github: https://github.com/n1k0/casperjs

Есть ветвь gh-pages для хранения проектной документации, которая в основном является веб-сайтом проекта: https://github.com/n1k0/casperjs/tree/gh-pages

Эта ветка настроенасайт документации по адресу http://n1k0.github.com/casperjs/ - ура.

Тем временем я купил домен casperjs.org, чтобы сделать этот сайт доступным через него, поэтому я поместил файл CNAME как рекомендуется в документах : https://github.com/n1k0/casperjs/blob/gh-pages/CNAME - в их примере предполагается, что операция создает перенаправления с www.example.com и charlie.github.com на example.com

Хотя веб-сайт теперь указывает на http://casperjs.org/,, перенаправления 301 с http://n1k0.github.com/casperjs/ (старый URL-адрес сайта) на новое доменное имя не существует.

Любая идеякак настроить такой редирект, если это вообще возможно?Это ошибка?Если это так, где я должен открыть вопрос?

Ответы [ 7 ]

29 голосов
/ 08 сентября 2015

Возвращая эту тему из мертвых, упомянув, что GH теперь поддерживает параметр redirect-from redirect-to https://github.com/jekyll/jekyll-redirect-from#redirect-to

Просто добавьте это в свой _config.yml

gems:
  - jekyll-redirect-from

И это в верхней части вашей индексной страницы.

---
redirect_to: "http://example.com"
---
12 голосов
/ 14 февраля 2012

Чтобы избежать дублирования контента, в первый раз вы можете добавить метаканонический код, подобный этому:

<link rel="canonical" href="http://casperjs.org">
7 голосов
/ 14 февраля 2012

Вы можете перенаправить с помощью Javascript после обнаружения хоста, например:

if (window.location.href.indexOf('http://niko.github.com') === 0) {
    window.location.href = 'http://casperjs.org{{ page.url }}';
}

Но я согласен, это не перенаправление HTTP.

4 голосов
/ 25 мая 2017

Github-страницы не поддерживают ничего вроде .htaccess или nginx/conf

https://help.github.com/articles/redirects-on-github-pages/

, поэтому самый простой способ:

перенаправление HTML:

index.html

<html>
  <head>
    <meta http-equiv="refresh" content="0; url=http://www.mywebsite.com/" />
  </head>

  <body>
    <p><a href="http://www.mywebsite.com/">Redirect</a></p>
  </body>
</html>
4 голосов

Ручная раскладка

Если вы не хотите использовать https://github.com/jekyll/jekyll-redirect-from, легко реализовать это самостоятельно:

a.md:

---
layout: 'redirect'
permalink: /a
redir_to: 'http://example.com'
sitemap: false
---

_layouts/redirect.html на основе Перенаправление со страницы HTML :

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Redirecting...</title>
  {% comment %}
    Don't use 'redirect_to' to avoid conflict
    with the page redirection plugin: if that is defined
    it takes over.
  {% endcomment %}
  <link rel="canonical" href="{{ page.redir_to }}"/>
  <meta http-equiv="refresh" content="0;url={{ page.redir_to }}" />
</head>
<body>
  <h1>Redirecting...</h1>
  <a href="{{ page.redir_to }}">Click here if you are not redirected.<a>
  <script>location='{{ page.redir_to }}'</script>
</body>
</html>

Сейчас:

firefox localhost:4000/a

перенаправит вас на example.com.

Как и в этом примере, плагин redirect-from не генерирует 301, только перенаправляет meta + JavaScript.

Мы можем проверить, что происходит:

curl localhost:4000/a

Протестировано на страницах GitHub v64, демонстрационная версия по адресу: https://github.com/cirosantilli/cirosantilli.github.io/tree/d783cc70a2e5c4d4dfdb1a36d518d5125071e236/r

4 голосов
/ 05 мая 2014

Почему вы не использовали http://www.w3.org/TR/WCAG20-TECHS/H76.html?

Это дало бы

<meta http-equiv="refresh" content="0;URL='http://casperjs.org/'" />
1 голос
/ 16 июля 2013

У меня была похожая проблема при переключении домена для моего сайта на страницах github. Я настроил rerouter на Heroku для обработки перенаправлений 301 в новый домен. Он очень просто обрабатывает перенаправления с домена на домен, но вам, возможно, придется изменить его, чтобы он обрабатывал устаревший домен вашего сайта + местоположение пути.

Я подробно описал шаги здесь:

http://joey.aghion.com/simple-301-redirects/

...