このソリューションでは、.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]
そこから、_site
Apache を使用してサービスを提供するかどうかはあなた次第です。通常、完全な Jekyll リポジトリを webroot 以外のディレクトリに複製すると、vhost はその_site
フォルダーへのシンボリック リンクになります。
ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com
多田!これで、Apache は仮想ルートから _site フォルダーを提供できるようになり、必要な HTTP 応答コードを使用する .htaccess を利用したリダイレクトを完了できます!
非常に凝って、redirect
各投稿のフロント マター内でプロパティを使用して、.htaccess ループで使用するリダイレクト コードを指定することもできます。