Skip to content

Instantly share code, notes, and snippets.

@domenic
Created February 10, 2017 19:28
Show Gist options
  • Star 110 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save domenic/1f286d415559b56d725bee51a62c24a7 to your computer and use it in GitHub Desktop.
Save domenic/1f286d415559b56d725bee51a62c24a7 to your computer and use it in GitHub Desktop.
Redirecting GitHub pages after a repository move

Redirecting GitHub Pages after a repository move

The problem

You have a repository, call it alice/repo. You would like to transfer it to the user bob, so it will become bob/repo.

However, you make heavy use of the GitHub Pages feature, so that people are often accessing https://alice.github.io/repo/. GitHub will helpfully redirect all of your repository stuff hosted on github.com after the move, but will not redirect the GitHub Pages hosted on github.io.

The solution

We solve this by:

  1. Moving the repository, thus breaking all the links
  2. Creating a new user GitHub Pages site for Alice (not project GitHub pages site), at https://alice.github.io.
  3. Adding a file repo/index.html to the user GitHub pages site, which uses <meta http-equiv="refresh"> to redirect to the new URL.

This means that https://alice.github.io/repo/ still exists as a working URL, even though the alice/repo repository does not. And it will redirect to the new URL, at https://bob.github.io/repo/.

The details

To create a new user GitHub pages site for Alice, Alice will just create a new repository on GitHub named alice.github.io, with a single branch gh-pages. This should work out of the box, although if it doesn't, Alice can check the settings tab for that repository to make sure it's publishing to GitHub Pages.

The file at repo/index.html in the alice/alice.github.io repository should look like this:

<!DOCTYPE html>
<meta charset="utf-8">
<title>Redirecting to https://bob.github.io/repo/</title>
<meta http-equiv="refresh" content="0; URL=https://bob.github.io/repo/">
<link rel="canonical" href="https://bob.github.io/repo/">
@oyepriyansh
Copy link

This doesn't seem to handle redirection for different paths within the original site. For instance https://alice.github.io/repo/some-content won't get redirected at all.

Any ideas there? I don't know of an option other than creating a similar index file for each path you support...

@MattCopenhaver

create a file named 404.html and add the meta redirect in it

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