From 53c3cfeade90150b07431386745a24aa699a25ec Mon Sep 17 00:00:00 2001 From: Matthew Miner <mminer237+face@gmail.com> Date: Mon, 10 Jul 2023 09:46:36 -0500 Subject: [PATCH] Use canonical URLs (#1883) --- src/shared/components/common/html-tags.tsx | 5 +++++ src/shared/components/community/community.tsx | 1 + src/shared/components/person/profile.tsx | 1 + src/shared/components/post/post.tsx | 1 + src/shared/components/search.tsx | 4 ++++ 5 files changed, 12 insertions(+) diff --git a/src/shared/components/common/html-tags.tsx b/src/shared/components/common/html-tags.tsx index 5d53258..80649fa 100644 --- a/src/shared/components/common/html-tags.tsx +++ b/src/shared/components/common/html-tags.tsx @@ -8,6 +8,7 @@ import { I18NextService } from "../../services"; interface HtmlTagsProps { title: string; path: string; + canonicalPath?: string; description?: string; image?: string; } @@ -16,6 +17,8 @@ interface HtmlTagsProps { export class HtmlTags extends Component<HtmlTagsProps, any> { render() { const url = httpExternalPath(this.props.path); + const canonicalUrl = + this.props.canonicalPath ?? httpExternalPath(this.props.path); const desc = this.props.description; const image = this.props.image; @@ -30,6 +33,8 @@ export class HtmlTags extends Component<HtmlTagsProps, any> { <meta key={u} property={u} content={url} /> ))} + <link rel="canonical" href={canonicalUrl} /> + {/* Open Graph / Facebook */} <meta property="og:type" content="website" /> diff --git a/src/shared/components/community/community.tsx b/src/shared/components/community/community.tsx index c00380a..b88d6f6 100644 --- a/src/shared/components/community/community.tsx +++ b/src/shared/components/community/community.tsx @@ -312,6 +312,7 @@ export class Community extends Component< <HtmlTags title={this.documentTitle} path={this.context.router.route.match.url} + canonicalPath={res.community_view.community.actor_id} description={res.community_view.community.description} image={res.community_view.community.icon} /> diff --git a/src/shared/components/person/profile.tsx b/src/shared/components/person/profile.tsx index 39979e2..d493f78 100644 --- a/src/shared/components/person/profile.tsx +++ b/src/shared/components/person/profile.tsx @@ -324,6 +324,7 @@ export class Profile extends Component< <HtmlTags title={this.documentTitle} path={this.context.router.route.match.url} + canonicalPath={personRes.person_view.person.actor_id} description={personRes.person_view.person.bio} image={personRes.person_view.person.avatar} /> diff --git a/src/shared/components/post/post.tsx b/src/shared/components/post/post.tsx index f9d3512..eeb713a 100644 --- a/src/shared/components/post/post.tsx +++ b/src/shared/components/post/post.tsx @@ -353,6 +353,7 @@ export class Post extends Component<any, PostState> { <HtmlTags title={this.documentTitle} path={this.context.router.route.match.url} + canonicalPath={res.post_view.post.ap_id} image={this.imageTag} description={res.post_view.post.body} /> diff --git a/src/shared/components/search.tsx b/src/shared/components/search.tsx index e9aaaa1..99b1803 100644 --- a/src/shared/components/search.tsx +++ b/src/shared/components/search.tsx @@ -466,6 +466,10 @@ export class Search extends Component<any, SearchState> { <HtmlTags title={this.documentTitle} path={this.context.router.route.match.url} + canonicalPath={ + this.context.router.route.match.url + + this.context.router.route.location.search + } /> <h1 className="h4 mb-4">{I18NextService.i18n.t("search")}</h1> {this.selects} -- 2.44.1