79

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ヘッドを送信できません。そのため、SEクローラーはそれをリダイレクトとして認識しません。

4

8 に答える 8

70

最善の解決策は、 と の両方を使用することです<meta http-equiv="refresh"<link rel="canonical" href=

それは非常にうまく機能し、Google Bot はポジションを失うことなく、新しいリンクの下で私のウェブサイト全体を再インデックスしました。また、ユーザーはすぐに新しい投稿にリダイレクトされます。

<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

于 2013-10-31T22:10:09.880 に答える
23

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>

この件に関するこのブログ投稿も参照してください。

于 2012-12-03T03:22:23.343 に答える
14

リダイレクト元プラグイン

https://github.com/jekyll/jekyll-redirect-from#redirect-to

これは GitHub でサポートされており、簡単に実行できます。

_config.yml

gems:
  - jekyll-redirect-from

午前

---
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を使用したくない場合は、自分で簡単に実装できます。

午前

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

_layouts/redirect.htmlHTML ページからのリダイレクトに基づく:

<!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
于 2016-04-25T18:33:06.227 に答える
9

このソリューションでは、.htaccess を介して真の HTTP リダイレクトを使用できますが、.htaccess を含むものは GitHub ページでは機能しません。Apache を使用していないためです。

2014 年 5 月現在、GitHub ページはリダイレクトをサポートしていますが、jekyll-redirect-from Gem のドキュメントによると、それらはまだHTTP-REFRESH (<meta>タグを使用) に基づいており、リダイレクトが発生する前にページを完全に読み込む必要があります。

私はこのアプローチが好きではない<meta>ので、事前に生成された Jekyll サイトを提供する Apache を使用して、.htaccess ファイル内で実際の HTTP 301 リダイレクトを提供しようとしている人のために、ソリューションを作成しました。


まず、プロパティに追加.htaccessしますinclude_config.yml

include: [.htaccess]

次に、.htaccess ファイルを作成し、必ずYAML の front matterを含めます。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]

そこから、_siteApache を使用してサービスを提供するかどうかはあなた次第です。通常、完全な Jekyll リポジトリを webroot 以外のディレクトリに複製すると、vhost はその_siteフォルダーへのシンボリック リンクになります。

ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com

多田!これで、Apache は仮想ルートから _site フォルダーを提供できるようになり、必要な HTTP 応答コードを使用する .htaccess を利用したリダイレクトを完了できます!

非常に凝って、redirect各投稿のフロント マター内でプロパティを使用して、.htaccess ループで使用するリダイレクト コードを指定することもできます。

于 2013-06-26T03:24:53.890 に答える
6

最善の方法は、_config.yml のパーマリンク形式を古いブログと一致するように設定して、URL の変更を完全に回避することです。

それ以上に、最も完全な解決策はリダイレクト ページを生成することですが、必ずしも努力する価値があるとは限りません。最終的には、正しい新しい URL を推測する JavaScript を使用して、404 ページを少し使いやすくしました。検索には何もしませんが、実際のユーザーは探していたページにアクセスでき、コードの残りの部分でサポートする必要のある古いものはありません。

http://tqcblog.com/2012/11/14/custom-404-page-for-a-github-pages-jekyll-blog/

于 2012-11-15T07:44:18.627 に答える
2

github では 301 リダイレクトが許可されていないため (これは驚くべきことではありません)、新しい URL 構造に移行する (そして検索エンジンのヒットを受ける) か、URL をそのままにしておくかを決定する必要があります。先に進んで行動することをお勧めします。検索エンジンのチップがどこにでも落ちるようにしましょう。誰かが検索エンジンを介して古いリンクの 1 つにアクセスすると、新しい場所にリダイレクトされます。時間が経つにつれて、検索エンジンは変更を取得します。

問題を解決するためにできることは、古いページではなく新しいページのみをリストするサイトマップを作成することです。これにより、古い URL の新しい URL への置換が高速化されます。さらに、すべての古い URL が「/programovani」ディレクトリにある場合は、robots.txt ファイルを使用して、今後のクロールでそのディレクトリを無視するように指示することもできます。例えば:

User-agent: *
Disallow: /programovani/

検索エンジンが変更に追いつくには、しばらく時間がかかります。これは本当に大したことではありません。古い URL がまだ存在し、実際のユーザーをアクティブなページにリダイレクトしている限り、問題はありません。

于 2012-04-19T18:24:13.197 に答える
1

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
于 2013-09-25T04:02:22.173 に答える
1

他の人が述べたように、最善の解決策は、機能する URL を保持するか、ページを複製して正規のURL を指定することです。

github ページは真のリダイレクトをサポートしていないため、Heroku にリルーターを設定して、サイトの古いドメインから新しいドメインに 301 (永続的) リダイレクトを返すことにしました。ここで詳細を説明しました:

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

于 2013-07-16T03:37:06.350 に答える