Каков наилучший подход для перенаправления старых страниц на страницах Jekyll и GitHub?
у меня есть блог на страницах github-jekyll
что является лучшим способом, чтобы решить стратегию адрес миграции?
Я нашел лучшую практику в общем, это создать htaccess, как так
Redirect 301 /programovani/2010/04/git-co-to-je-a-co-s-tim/ /2010/04/05/git-co-to-je-a-co-s-tim.html
но это, кажется, не работает с Github. Еще одно решение, которое я нашел, - создать задачу rake, которая будет генерировать страницы перенаправления. Но так как это html, он не может отправить 301
head, поэтому искатели SE не распознают его как перенаправление.
8 ответов:
лучшее решение-использовать оба
<meta http-equiv="refresh"
и<link rel="canonical" href=
он работает очень хорошо, бот Google переиндексировал весь мой сайт по новым ссылкам, не теряя позиций. Также пользователи сразу же перенаправляются на новые сообщения.
<meta http-equiv="refresh" content="0; url=http://konradpodgorski.com/blog/2013/10/21/how-i-migrated-my-blog-from-wordpress-to-octopress/"> <link rel="canonical" href="http://konradpodgorski.com/blog/2013/10/21/how-i-migrated-my-blog-from-wordpress-to-octopress/" />
используя
<meta http-equiv="refresh"
перенаправит каждого посетителя на новую должность. Что касается Google бота, то он лечит<link rel="canonical" href=
как 301 редирект, эффект заключается в том, что вы получаете ваши страницы переиндексированы, и это то, что вы хотите.Я описал все процесс, как я переместил свой блог из Wordpress в Octopress здесь. http://konradpodgorski.com/blog/2013/10/21/how-i-migrated-my-blog-from-wordpress-to-octopress/#redirect-301-on-github-pages
вы пробовали плагин генератора псевдонимов Jekyll?
вы помещаете URL-адреса псевдонимов в переднюю часть сообщения YAML:
--- layout: post title: "My Post With Aliases" alias: [/first-alias/index.html, /second-alias/index.html] ---
когда пользователь посещает один из URL-адресов псевдонимов, они перенаправляются на основной url-адрес через обновление мета-тега:
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="refresh" content="0;url=/blog/my-post-with-aliases/" /> </head> </html>
см. также этот блог на эту тему.
это решение позволяет использовать истинные http перенаправления через .htaccess-впрочем, ничего особенного .htaccess будет работать на страницах GitHub, потому что они не используют Apache.
по состоянию на май 2014!--19-->GitHub Pages поддерживает редиректы, но по Jekyll-redirect-from Gem documentation они все еще основаны на HTTP-REFRESH (через
<meta>
Теги), что требует полной загрузки страницы перед перенаправлением может произойти.I не нравится
<meta>
подход так что я на скорую руку решение для тех, кто хочет обеспечить реальные HTTP 301 перенаправления в пределах an .htaccess файл с помощью Apache, который обслуживает предварительно сгенерированный сайт Jekyll:
во-первых, добавьте
.htaccess
доinclude
в собственность_config.yml
include: [.htaccess]
далее создать .htaccess файл и обязательно укажите YAML-заголовок. Эти тире важны, потому что теперь Джекилл будет разбирать файл с жидкостью, Джекиллом язык шаблонов:
--- --- DirectoryIndex index.html RewriteEngine On RewriteBase / ...
убедитесь, что ваши сообщения, требующие перенаправления, имеют два свойства:
--- permalink: /my-new-path/ original: blog/my/old/path.php ---
сейчас .htaccess, просто добавьте цикл:
{% for post in site.categories.post %} RewriteRule ^{{ post.original }} {{ post.permalink }} [R=301,L] {% endfor %}
это будет динамически генерировать .htaccess каждый раз, когда вы строите сайт, и
include
в файле config гарантирует, что .htaccess превращает его в .RewriteRule ^blog/my/old/path.php /my-new-path/ [R=301,L]
оттуда, это до вас, чтобы служить
_site
использование Apache. Я обычно клонирую полный Jekyll РЕПО в каталог не webroot, то мой vhost является символической ссылкой на :ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com
Тада! Теперь Apache может обслуживать папку _site из вашего виртуального корня, в комплекте С.htaccess-питание перенаправляет, которые используют любой код ответа HTTP вы хотите!
вы можете даже получить супер фантазии и использовать
redirect
свойство в передней части каждого сообщения, чтобы определить, какой код перенаправления использовать в вашем .цикл htaccess.
лучшим вариантом является, чтобы избежать изменения URL-адреса, настройка формата ссылка в _config.yml, чтобы соответствовать вашему старому блогу.
кроме того, наиболее полным решением является создание страниц перенаправления, но это не обязательно стоит усилий. Я просто сделал свою страницу 404 немного дружелюбнее, с javascript, чтобы угадать правильный новый url. Он ничего не делает для поиска, но фактические пользователи могут попасть на страницу, которую они искали, и нет никаких устаревших материалов для поддержки остальная часть кода.
http://tqcblog.com/2012/11/14/custom-404-page-for-a-github-pages-jekyll-blog/
redirect-from pluginhttps://github.com/jekyll/jekyll-redirect-from#redirect-to поддерживается GitHub и позволяет легко:
_config.yml
:gems: - jekyll-redirect-from
a.md
:--- permalink: /a redirect_to: 'http://example.com' ---
как объяснено на: https://help.github.com/articles/redirects-on-github-pages/
теперь:
firefox localhost:4000/a
перенаправит вас на
example.com
.плагин берет на себя всякий раз, когда
redirect_to
определяется страницы.протестировано на страницах GitHub v64.
Примечание: эта версия имеет серьезную недавно исправленную ошибку, которая ошибочно повторно использует макет по умолчанию для перенаправления:https://github.com/jekyll/jekyll-redirect-from/pull/106
ручной метод компоновки
если вы не хотите использовать 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>
такой пример
redirect-from
плагин не генерирует 301s, толькоmeta
+ JavaScript перенаправляет.мы можем проверить, что происходит с:
curl localhost:4000/a
поскольку github не позволяет перенаправлять 301 (что неудивительно), вам придется принять решение между переходом на новую структуру URL (и принятием хита поисковой системы) или оставить URL-адреса так, как они есть. Я предлагаю вам идти вперед и сделать движение. Пусть поисковые чипы падают там, где они могут. Если кто-нибудь ударит одну из ваших старых ссылок через поисковую систему, они будут перенаправлены на новое место. Со временем поисковые системы будут подбирать ваши изменения.
что вы можете сделать, чтобы помочь делу нужно создать Карта сайта где вы только перечислите свои новые страницы, а не старые. Это должно ускорить замену старых URL на новые. Кроме того, если все ваши старые URL-адреса находятся в вашем каталоге '/programovani', вы также можете использовать роботы.текстовый файл чтобы сообщить будущим обходам, они должны игнорировать этот каталог. Например:
User-agent: * Disallow: /programovani/
Это займет некоторое время для поисковых систем догнать изменения. Это не так уж и важно. Пока старые URL-адреса все еще существуют и перенаправляют реальных людей на активные страницы, вы будете в порядке.
Как уже упоминалось, лучшим решением является сохранение рабочих URL-адресов или дублирование страниц и указание canonical URL.
поскольку страницы github не поддерживают истинные перенаправления, я решил настроить rerouter на Heroku для возврата 301 (постоянный) перенаправляет со старого домена моего сайта на новый. Я описал детали здесь: