Githubページにブログがあります-jekyll
URL戦略の移行を解決する最良の方法は何ですか?
共通のベストプラクティスは、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クローラーはリダイレクトとして認識しません。
最善の解決策は、<meta http-equiv="refresh"
と<link rel="canonical" href=
の両方を使用することです
Google Botは、位置を失うことなく、新しいリンクの下でWebサイト全体のインデックスを再作成しました。また、ユーザーはすぐに新しい投稿にリダイレクトされます。
<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 Botについては、<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 Alias Generatorプラグイン を試しましたか?
投稿のYAMLフロントマターにエイリアスURLを配置します。
---
layout: post
title: "My Post With Aliases"
alias: [/first-alias/index.html, /second-alias/index.html]
---
ユーザーがエイリアスURLの1つにアクセスすると、メタタグの更新を介してメイン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>
この件については このブログ投稿 もご覧ください。
2014年5月現在 GitHub Pagesはリダイレクトをサポートしています ですが、 Gemドキュメントからのjekyll-redirect-from によれば、これらは依然として HTTP-REFRESH ( <meta>
タグを使用します)、リダイレクトが発生する前にページを完全にロードする必要があります。
私は<meta>
アプローチが好きではないので、事前に生成されたJekyllサイトを提供するApacheを使用して、.htaccessファイル内で実際のHTTP 301リダイレクトを提供したい人のためのソリューションを作成しました。
最初に、.htaccess
のinclude
プロパティに_config.yml
を追加します
include: [.htaccess]
次に、.htaccessファイルを作成し、必ず YAMLフロントマター を含めてください。 JekyllはJekyllのテンプレート言語であるLiquidでファイルを解析するため、これらのダッシュは重要です。
---
---
DirectoryIndex index.html
RewriteEngine On
RewriteBase /
...
リダイレクトを必要とする投稿には、次のような2つのプロパティがあることを確認してください。
---
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
により、.htaccessが_site
ディレクトリに作成されます。
RewriteRule ^blog/my/old/path.php /my-new-path/ [R=301,L]
そこから、Apacheを使用して_site
を提供するのはあなた次第です。通常、完全なJekyllリポジトリを非webrootディレクトリに複製すると、vhostは_site
フォルダーへのシンボリックリンクになります。
ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com
多田!これで、Apacheは仮想ルートから_siteフォルダーを提供でき、必要なHTTP応答コードを使用する.htaccess-poweredリダイレクトを完了できます!
さらに、各投稿の前件内でredirect
プロパティを使用して、.htaccessループで使用するリダイレクトコードを指定することもできます。
redirect-fromプラグイン
https://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
プラグインは301を生成せず、meta
+ JavaScriptリダイレクトのみを生成します。
何が起こっているかを確認できます:
curl localhost:4000/a
最適なオプションは、古いブログに一致するように_config.ymlのパーマリンク形式を設定して、URLの変更を完全に回避することです。
さらに、最も完全なソリューションはリダイレクトページを生成することですが、必ずしも努力する価値はありません。正しい新しいURLを推測するJavaScriptを使用して、404ページを少し使いやすくしました。検索に対しては何もしませんが、実際のユーザーは探しているページにアクセスできます。残りのコードでは、サポートするレガシーなものはありません。
http://tqcblog.com/2012/11/14/custom-404-page-for-a-github-pages-jekyll-blog/
Githubでは301リダイレクトが許可されていないため(これは驚くことではありません)、新しいURL構造に移動する(および検索エンジンをヒットさせる)か、URLをそのままにするかを決定する必要があります。先に進んで移動することをお勧めします。検索エンジンチップをどこにでも落下させます。誰かが検索エンジンを介して古いリンクのいずれかにヒットすると、それらは新しい場所にリダイレクトされます。時間が経つにつれて、検索エンジンが変更をピックアップします。
問題を解決するためにできることは、古いページではなく新しいページのみをリストする Sitemap を作成することです。これにより、古いURLから新しいURLへの置き換えが高速化されます。さらに、古いURLがすべて「/ programovani」ディレクトリにある場合は、 robots.txtファイル を使用して、将来のクロールにそのディレクトリを無視するよう指示することもできます。例えば:
User-agent: *
Disallow: /programovani/
検索エンジンが変更に追いつくには少し時間がかかります。これは本当に大したことではありません。古いURLがまだ存在し、実際のユーザーをアクティブなページにリダイレクトする限り、問題ありません。
Jekyllは過去数か月間にいくつかの主要な更新を行ったため、この質問が最初に投稿されたときにはこれが不可能だったかもしれません...
Jekyllは、ブログ投稿の YAMLフロントマターセクション でpermalink
属性をサポートしています。投稿に含めるURLを指定すると、Jekyllはサイトを生成するときに(ファイル名ではなく)そのURLを使用します。
---
title: My special blog post
permalink: /programovani/2010/04/git-co-to-je-a-co-s-tim
---
My blog post markdown content