diff --git a/packages/docusaurus-theme-classic/src/theme/LayoutHead/index.tsx b/packages/docusaurus-theme-classic/src/theme/LayoutHead/index.tsx index c263477449..6c222faeb7 100644 --- a/packages/docusaurus-theme-classic/src/theme/LayoutHead/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/LayoutHead/index.tsx @@ -16,6 +16,7 @@ import { useTitleFormatter, useAlternatePageUtils, } from '@docusaurus/theme-common'; +import {useLocation} from '@docusaurus/router'; // Useful for SEO // See https://developers.google.com/search/docs/advanced/crawling/localized-versions @@ -42,6 +43,32 @@ function AlternateLangHeaders(): JSX.Element { ); } +// Default canonical url inferred from current page location pathname +function useDefaultCanonicalUrl() { + const { + siteConfig: {url: siteUrl}, + } = useDocusaurusContext(); + const {pathname} = useLocation(); + return siteUrl + useBaseUrl(pathname); +} + +function CanonicalUrlHeaders({permalink}: {permalink?: string}) { + const { + siteConfig: {url: siteUrl}, + } = useDocusaurusContext(); + const defaultCanonicalUrl = useDefaultCanonicalUrl(); + + const canonicalUrl = permalink + ? `${siteUrl}${permalink}` + : defaultCanonicalUrl; + return ( + + + + + ); +} + export default function LayoutHead(props: Props): JSX.Element { const { siteConfig, @@ -50,16 +77,8 @@ export default function LayoutHead(props: Props): JSX.Element { const { favicon, themeConfig: {image: defaultImage, metadatas}, - url: siteUrl, } = siteConfig; - const { - title, - description, - image, - keywords, - permalink, - searchMetadatas, - } = props; + const {title, description, image, keywords, searchMetadatas} = props; const metaTitle = useTitleFormatter(title); const metaImage = image || defaultImage; const metaImageUrl = useBaseUrl(metaImage, {absolute: true}); @@ -91,11 +110,11 @@ export default function LayoutHead(props: Props): JSX.Element { {metaImage && ( )} - {permalink && } - {permalink && } + + +
+
diff --git a/website/src/pages/versions.js b/website/src/pages/versions.js index 8591bae97f..df31a72773 100644 --- a/website/src/pages/versions.js +++ b/website/src/pages/versions.js @@ -26,7 +26,6 @@ function Version() { return (

Docusaurus documentation versions