Skip to content

Instantly share code, notes, and snippets.

@BrianMitchL
Last active February 28, 2024 23:05
Show Gist options
  • Save BrianMitchL/f93622a46f4476b7514995ff502d8d17 to your computer and use it in GitHub Desktop.
Save BrianMitchL/f93622a46f4476b7514995ff502d8d17 to your computer and use it in GitHub Desktop.
Eleventy Redirect From

Eleventy Redirect From

Use this template for drop-in replacement from the jekyll-redirect-from style of creating redirect files from old routes to the route of the current page.

In the front matter or data of a page, add one or many redirects:

Single

redirect_from: /old-url/page

Multiple

redirect_from: [/old-url/page, /some-other-page]
---js
{
pagination: {
data: "collections.all",
size: 1,
alias: "redirect",
before: function (data) {
return data.reduce((redirects, page) => {
if (Array.isArray(page.data.redirect_from)) {
for (let url of page.data.redirect_from) {
redirects.push({ to: page.url, from: url });
}
} else if (typeof page.data.redirect_from === 'string') {
redirects.push({ to: page.url, from: page.data.redirect_from });
}
return redirects;
}, []);
},
addAllPagesToCollections: false,
},
permalink: "{{ redirect.from }}/index.html",
eleventyExcludeFromCollections: true,
}
---
<!DOCTYPE html>
<html lang="en-US">
<meta charset="utf-8">
<title>Redirecting&hellip;</title>
<link rel="canonical" href="{{ redirect.to | url }}">
<script>location="{{ redirect.to | url }}"</script>
<meta http-equiv="refresh" content="0; url={{ redirect.to | url }}">
<meta name="robots" content="noindex">
<h1>Redirecting&hellip;</h1>
<a href="{{ redirect.to | url }}">Click here if you are not redirected.</a>
</html>
@maphouse
Copy link

maphouse commented Aug 6, 2023

Great functionality thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment