From 3551988698dbe6a71efbec1eb37ea53181c2546b Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 15 Mar 2021 12:04:44 -0500 Subject: [PATCH] Set canonical links Search engines appear to be ok with noindex tags generated by JS, so canonical links should be fine too --- src/lib/tw-state-manager-hoc.jsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/lib/tw-state-manager-hoc.jsx b/src/lib/tw-state-manager-hoc.jsx index f3bb2f248..800f09ce5 100644 --- a/src/lib/tw-state-manager-hoc.jsx +++ b/src/lib/tw-state-manager-hoc.jsx @@ -138,6 +138,16 @@ class FileHashRouter extends HashRouter { } } +const getCanonicalLinkElement = () => { + let el = document.querySelector('link[rel=canonical]'); + if (!el) { + el = document.createElement('link'); + el.rel = 'canonical'; + document.head.appendChild(el); + } + return el; +}; + class WildcardRouter extends Router { constructor (callbacks) { super(callbacks); @@ -211,6 +221,8 @@ class WildcardRouter extends Router { } const path = `${this.root}${parts.join('/')}`; + const canonical = `${location.origin}${this.root}${projectId === '0' ? '' : projectId}`; + getCanonicalLinkElement().href = canonical; return `${path}${location.search}${location.hash}`; }