Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Canonical URLs with Jekyll
<link rel="canonical" href="http://yourdomain.com{{ page.url | replace:'index.html','' }}" />
@StarWar

This comment has been minimized.

Copy link

@StarWar StarWar commented Jan 19, 2013

I've set a production_url in config
I use this:

<link rel="canonical" href="{{ site.production_url }}{{ page.url | replace:'index.html',''}}">

@smileprem

This comment has been minimized.

Copy link

@smileprem smileprem commented Jan 27, 2014

Thanks guys. I have used this the code by StarWar.

@quangbahoa

This comment has been minimized.

Copy link

@quangbahoa quangbahoa commented May 14, 2014

Here is default config for site.url

<link rel="canonical" href="{{ site.url }}{{ page.url | replace:'index.html',''}}">
@filippovitale

This comment has been minimized.

Copy link

@filippovitale filippovitale commented Oct 2, 2018

In case you set the baseurl on _config.yml

<link rel="canonical" href="{{ site.url }}{{ site.baseurl }}{{ page.url | replace:'index.html',''}}">
@ylogx

This comment has been minimized.

Copy link

@ylogx ylogx commented Jan 28, 2019

If you want to allow links to other domains, you can use following in head.html:


    {% if page.canonical_url != nil %}
    <link rel="canonical" href="{{ page.canonical_url }}"/>
    {% else %}
    <link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
    {% endif %}
@barbolo

This comment has been minimized.

Copy link

@barbolo barbolo commented Mar 18, 2019

<link rel="canonical" href="{{ page.url | absolute_url }}" />

@mrshannonyoung

This comment has been minimized.

Copy link

@mrshannonyoung mrshannonyoung commented Oct 9, 2020

<link rel="canonical" href="{{ page.url | absolute_url }}" />

When on the 'homepage' the URL generated will be /, which is not valid.

I use a variation of this.

{% if page.url =='/' %}{{site.url}}{% else %}{{page.url | absolute_url}}{% endif %}

This prevents an error with Google SEO report on Lighthouse

Document does not have a valid rel=canonicalRelative URL (/)
Canonical links suggest which URL to show in search results.
https://web.dev/canonical/

A caveat though. With jekyll serve {{site.url}} is set to localhost:4000, when you do a jekyll build {{site.url}} is replaced by whatever domain name you set in the _config.yml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.