diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml
index d0af9b7136b..2b94222d741 100644
--- a/config/locales/server.en.yml
+++ b/config/locales/server.en.yml
@@ -2057,6 +2057,7 @@ en:
embed_any_origin: "Allow embeddable content regardless of origin. This is required for mobile apps with static HTML."
embed_topics_list: "Support HTML embedding of topics lists"
+ embed_set_canonical_url: "Set the canonical URL for embeded topics to the embeded content's URL."
embed_truncate: "Truncate the embedded posts."
embed_support_markdown: "Support Markdown formatting for embedded posts."
embed_whitelist_selector: "A comma separated list of CSS elements that are allowed in embeds."
diff --git a/config/site_settings.yml b/config/site_settings.yml
index d42c7f7b0bc..42acc80a844 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -880,6 +880,7 @@ posting:
- code-fences
embed_any_origin: false
embed_topics_list: false
+ embed_set_canonical_url: false
embed_truncate:
default: true
embed_support_markdown:
diff --git a/lib/topic_view.rb b/lib/topic_view.rb
index 31c6729ac0b..62f953b6fd5 100644
--- a/lib/topic_view.rb
+++ b/lib/topic_view.rb
@@ -113,6 +113,10 @@ class TopicView
end
def canonical_path
+ if SiteSetting.embed_set_canonical_url
+ topic_embed = topic.topic_embed
+ return topic_embed.embed_url if topic_embed
+ end
path = relative_url.dup
path <<
if @page > 1
diff --git a/spec/requests/topics_controller_spec.rb b/spec/requests/topics_controller_spec.rb
index 3394894737a..bb570a8674b 100644
--- a/spec/requests/topics_controller_spec.rb
+++ b/spec/requests/topics_controller_spec.rb
@@ -3072,6 +3072,22 @@ RSpec.describe TopicsController do
expect(body).to include(' user_agent }
+ expect(response.body).to include(' user_agent }
+ expect(response.body).to include(' "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36", "HTTP_VIA" => "HTTP/1.0 web.archive.org (Wayback Save Page)" }