Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
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 GitHub will helpfully redirect all of your repository stuff hosted on after the move, but will not redirect the GitHub Pages hosted on

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
  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 still exists as a working URL, even though the alice/repo repository does not. And it will redirect to the new URL, at

The details

To create a new user GitHub pages site for Alice, Alice will just create a new repository on GitHub named, 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/ repository should look like this:

<!DOCTYPE html>
<meta charset="utf-8">
<title>Redirecting to</title>
<meta http-equiv="refresh" content="0; URL=">
<link rel="canonical" href="">
Copy link

kaizhu256 commented Mar 11, 2020

thx, this document helped restore broken-links when moving sql.js to

Copy link

k-hinnenkamp commented Apr 3, 2020

When I do this and click on the old link, it downloads the new file instead of redirecting. Any idea what I am doing incorrectly?

Copy link

paulirish commented May 12, 2020

Thanks @domenic! The meta refresh with 0 sec delay is great, and agree that canonical is the move.

I also like to add in some body content, but it's definitely optional.

<body style="text-align: center">
Redirecting to <a href=""></a>

Copy link

mukhtharcm commented Jul 13, 2020

can i just add this one file and get my github pages personal blog to netlify URL?

Copy link

MattPM commented Nov 13, 2020

thanks this worked perfect for me.

Copy link

EvokerKing commented Dec 5, 2020

I did it and it worked. Then I left my PC for a bit, came back and it stopped working. It only works if I go to /repo.

Copy link

EvokerKing commented Dec 5, 2020

I did it and it worked. Then I left my PC for a bit, came back and it stopped working. It only works if I go to /repo.

Update: It works now. I removed it from inside of repo

Copy link

hancush commented Mar 15, 2021

worked like a charm – thank you!

Copy link

pranav-dabre commented Mar 23, 2021

Thank You

Copy link

QLVL commented Apr 1, 2021

This is awesome, thank you!

Copy link

Sneezry commented Apr 25, 2021

This could be the only solution for this scenario. But I would like to remind people who is reading this. http-equiv refresh could make tons of security software (Avira, CEDF, CyRadar, ESET, Kaspersky, McAfee, Symantec, etc) mark your site as phishing by mistake. And you have to send requests to all of them to remove your site from their block lists. Some of them may just ignore your request, Kaspbersky for example.

Copy link

akashennn commented Jun 14, 2021

Initially didn't work then I triggered the deployment again (as per -- then it started working, Thanks :)

Copy link

rdmolony commented Jun 30, 2021

Thanks @domenic If you anyone also wants to redirect subpages you can create a new file called 404.html with the same contents as index.html

Copy link

thumbarnirmal commented Sep 7, 2021

I was looking exactly for this. Thanks! 👍

Copy link

MattCopenhaver commented Sep 29, 2021

This doesn't seem to handle redirection for different paths within the original site. For instance 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...

Copy link

web-apply commented Oct 22, 2021


Copy link

nvuillam commented Oct 30, 2021

In addition to root redirection as described upper, you can also override 404 error page using JS redirection, that preserves the rest of the URL :) ( full url and not just root domain, query, hashtag...)

Can be seen in its natural habitat there ->

<!DOCTYPE html>

    <meta charset="utf-8">
    <title>Error 404 :(</title>

        window.onload = function () {
            const destination = window.location.href;
            if (window.location.href.includes("")) {
                const redirectLocation = window.location.href.replace(
                document.getElementById("body").innerHTML = "Mega-Linter has moved into an organization repository for its V5 !<br/><br/>Redirecting to " + redirectLocation + " ...";
                window.location.href = redirectLocation;

<body id="body" style="text-align: center">
    Page not found


Copy link

abmptit commented Aug 22, 2022

I ve got similar problem.
I created repos TOTO, I deployed github page
After that I removed the TOTO repos, I recreate another with same name, I deployed github pages,
When I try to navigate to I'm redirected to
Any idea plz ?

Copy link

akaszynski commented Aug 22, 2022

The 404.html is just what I needed to be able to redirect the subpaths of the original site. Thanks!

Copy link

PMIRNC commented Oct 27, 2022

Thank you

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