Hacker News new | ask | show | jobs
by qbasic_forever 1529 days ago
I don't think you can set a page or URL on github to return a 301 moved permanently response or similar 3xx codes. This can really mess up your SEO if you have a popular page and try to move off github, you'll basically lose all the clout on the URL and have to start fresh. It might not matter for stuff you're just tossing out there but is definitely something to consider if you're putting a blog, public facing site, etc. there.
1 comments

I have a few 301 redirects setup on github pages

    $ curl https://nobodywasishere.github.io # moved to https://blog.eowyn.net

    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>

    $ curl https://blog.eowyn.net/vhdlref-jtd # moved to https://blog.eowyn.net/vhdlref

    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
Is that coming back with a HTTP 200 response though and the made up HTML page? That doesn't seem right... at least, I dunno if google and such would actually index your page at the new URL vs. just thinking "huh weird looks like blog.eowyn.net is now called '301 Moved Permanently', better trash that down in the rankings".
It shows up as a proper 301 when I load up the URL in Firefox. The question is, how?
One of the Jekyll plugins that GH Pages supports[0] is jekyll-redirect-from, which lets you put a `redirect_to` entry in a page's front matter.

[0]: https://pages.github.com/versions/

I found this example of another repo that is using the same trick: https://github.com/kotokaze/kotokaze.github.io

    ~ % curl -i 'https://kotokaze.github.io/'
    HTTP/2 301 
    server: GitHub.com
    content-type: text/html
    permissions-policy: interest-cohort=()
    location: http://github.kotokaze.net/
For the latter, `<meta http-equiv="refresh" content="0; URL=https://blog.eowyn.net/vhdlref" />` in the `<head>`
Wow, nice yeah I'd love to know how github supports configuring a URL to 301 redirect!
Yea, no.

A 301 (or 302) redirect means setting the status code header to 301 and providing a location header with the place to redirect to. Last I checked GitHub doesn't allow any of this, or setting any other headers (like cache-control). To work around this, I've been putting cloudflare in front of my site which lets me use page rules to set redirects if necessary.