Hướng dẫn về Canonical Tag
Cách implement rel=canonical correctly — đó HTML link element, đó HTTP Link header cho PDFs, absolute URLs, một per trang — và nơi mọi người go wrong.
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này
- Công cụ trực tuyến liên quanHTTP Status & Redirect Checker
MỘT canonical tag (rel=canonical) tells các công cụ tìm kiếm mà URL là đó được ưu tiên version of duplicate nội dung. đây là một hint, không một directive — một mạnh tín hiệu Google có thể override. Hợp lệ các phương thức: đó HTML <link rel="canonical"> trong đó <head> (không bao giờ đó <body>), đó HTTP Link header (đó way to canonicalize PDFs và other non-HTML), và sitemap inclusion as một weaker tín hiệu. Declare một unambiguous canonical mối quan hệ per trang; multiple hoặc conflicting declarations có thể produce unexpected kết quả, so không claim đó an engine deterministically chọn đó đầu tiên hoặc cuối cùng. Dùng absolute URLs và self-reference của bạn được ưu tiên các trang. không canonicalize paginated các trang to trang 1, và không combine canonical với noindex hoặc một robots.txt block — những gửi conflicting các tín hiệu. Kiểm thử đó thô phản hồi, được kết xuất DOM, các header phản hồi, và GSC người dùng-declared so với. Google-được chọn canonical.
TL;DR — MỘT canonical tag tells các công cụ tìm kiếm mà URL là đó “main” một khi đó giống nhau nội dung lives tại hơn một address. Bạn thêm một một-line
<link rel="canonical" href="...">to đó trang<head>pointing tại đó version bạn muốn được lập chỉ mục. đây là một hint, không một command — Google thường follows điều này, nhưng điều này có thể pick một khác nhau trang nếu other các tín hiệu disagree.
Điều gì một canonical tag là
Khi đó giống nhau (hoặc nearly đó giống nhau) nội dung là reachable tại multiple URLs — say
example.com/page, example.com/page?ref=newsletter, và đó http://
version — các công cụ tìm kiếm có to decide mà một to thực ra cho thấy trong kết quả.
MỘT canonical tag là cách bạn tell them của bạn preference.
đây là một single line of HTML đó goes trong đó <head> of đó trang:
<link rel="canonical" href="https://www.example.com/page/">Đó says: “If you find this content at several URLs, treat this one as the real version.” (bản dịch) «Nếu bạn tìm này nội dung tại several URLs, treat này một as đó real version.» Các công cụ tìm kiếm thì consolidate các tín hiệu xếp hạng — like links — onto đó được ưu tiên URL thay vì splitting them across duplicates.
Đó một điều to understand đầu tiên
MỘT canonical tag là một hint, không một directive. Google takes điều này as một mạnh
suggestion, nhưng điều này weighs điều này so với other các tín hiệu và có thể chọn một khác nhau
URL. Evidence for this claim Canonicalization methods communicate a preferred URL, but Google can choose a different canonical when signals conflict. Scope: Google Search canonical selection; applies to duplicate or very similar pages. Confidence: high · Verified: Google: URL canonicalization So này tag làm không force đó other version out of Google. Nếu bạn muốn một
trang thực ra đã biến mất từ tìm kiếm, đó là một khác nhau tool (noindex), không một
canonical.
Này là đó nguồn of hầu hết confusion. Mọi người thêm một canonical và assume đó other URL là deleted từ Google. Điều này không — đó canonical chỉ tells Google mà version to ưu tiên và consolidate onto.
Cách thêm một (đó đơn giản version)
- Thô HTML: put đó
<link rel="canonical" href="...">line trong đó<head>. - WordPress: an SEO plugin (Yoast hoặc Xếp hạng Math) adds một self-referencing canonical tự động, và cho phép bạn set một custom một per trang.
- Shopify: đó theme adds canonicals theo mặc định; bạn edit them trong đó
theme
theme.liquid/templates.
Three rules đó cover hầu hết mistakes: dùng đó đầy đủ https://... URL (không một
ngắn /page/ path), giữ điều này trong đó <head>, và có chỉ một per trang.
Điều gì đây là good cho
- Duplicate nội dung từ tracking parameters, print versions, hoặc đó giống nhau sản phẩm reachable qua khác nhau category paths.
- Consolidating links so đó authority từ links to several URLs lands on đó một bạn muốn to xếp hạng.
- Self-referencing: đây là fine (và được khuyến nghị) cho một trang to name itself as của nó own canonical — đó làm của bạn preference clear.
Muốn đó chi tiết triển khai — đó HTTP header phương thức cho PDFs, đó chính xác ways điều này silently fails, và cách kiểm thử điều này — switch to đó Advanced tab.
TL;DR —
rel=canonicallà một hint, không một rule — một mạnh tín hiệu Google có thể và làm override. Hợp lệ declaration các phương thức: đó HTML<link rel="canonical">trong đó<head>(trong đó<body>đây là disregarded), đó HTTPLink: rel="canonical"header (đó chỉ way to canonicalize PDFs và other non-HTML), và sitemap inclusion as một weaker tín hiệu. Dùng chính xác một unambiguous canonical per trang — multiple hoặc conflicting declarations có thể produce unexpected kết quả. Dùng absolute URLs, self-reference được ưu tiên các trang, và không canonicalize một paginated series to trang 1. không pair canonical vớinoindex, một robots.txt block, hoặc một 4XX — mỗi một dừng Google reading hoặc honoring đó tag. Kiểm thử với view-nguồn so với đó được kết xuất DOM,curl -Icho đó header, và GSC URL Inspection (Người dùng-declared so với Google-được chọn).
MỘT canonical là một declaration, không một decision
Giữ hai ideas tách biệt. Canonicalization là đó xử lý Google chạy to pick một representative URL out of một duplicate set — điều này weighs một toàn bộ pile of các tín hiệu to làm điều này. Đó canonical tag là chỉ một of những các tín hiệu: của bạn declared preference. Này trang là về declaring điều này correctly; đó selection xử lý itself lives on đó canonicalization hub.
Đó phân biệt là đó toàn bộ độ chính xác spine ở đây, vì Google là rõ ràng đó “indicating a canonical preference is a hint, not a rule.” (bản dịch) «indicating một canonical preference là một hint, không một rule.» đây là một mạnh hint — as I’ve được diễn đạt điều này trong my deep dive on canonicalization, đó canonical là “considered a strong signal,” (bản dịch) «considered một mạnh tín hiệu,» và “Google ignores it if other signals are stronger.” (bản dịch) «Google bỏ qua điều này nếu other các tín hiệu là stronger.» Nhưng điều này là không bao giờ một directive. Nếu bạn declare URL MỘT as canonical trong khi của bạn liên kết nội bộ, sitemap, và các chuyển hướng all point tại URL B, Google có thể side với B. (đó là đó “Duplicate, Google chose a different canonical than user” (bản dịch) «Duplicate, Google chose một khác nhau canonical hơn người dùng» state bạn’ll see trong Search Console.) Evidence for this claim Canonicalization methods communicate a preferred URL, but Google can choose a different canonical when signals conflict. Scope: Google Search canonical selection; applies to duplicate or very similar pages. Confidence: high · Verified: Google: URL canonicalization
Three non-chuyển hướng ways to declare một canonical
Alongside các chuyển hướng, Google documents three non-chuyển hướng ways to indicate một canonical, và they có khác nhau strengths: Evidence for this claim Alongside redirects, Google documents three non-redirect ways to indicate a canonical: an HTML link element, an HTTP Link header, and sitemap inclusion. Scope: The three non-redirect canonical declaration approaches covered in this article; Google also documents redirects as a canonicalization method. Confidence: high · Verified: Google: Specify a canonical URL
- HTML
<link rel="canonical">trong đó<head>— “A strong signal that the specified URL should become canonical.” (bản dịch) «MỘT mạnh tín hiệu đó đó specified URL nên become canonical.» Này là đó everyday phương thức cho HTML các trang. - HTTP
Link: rel="canonical"header phản hồi — cho documents nơi bạn không thể put một<link>element. Google: bạn có thể “use a link HTTP response header with a rel=” (bản dịch) «dùng một link HTTP header phản hồi với một rel=\»canonical” target attribute as defined by RFC5988 rather than an HTML element to indicate the canonical URL for a document supported by Search, including non-HTML documents such as PDF files.” (bản dịch) « đích thuộc tính as được định nghĩa by RFC5988 thay vì an HTML element to indicate đó canonical URL cho một document supported by Tìm kiếm, including non-HTML documents such as PDF files.» Đó HTML phương thức “Only works for HTML pages, not for files such as PDF. In such cases, you can use the rel=” (bản dịch) «Chỉ hoạt động cho HTML các trang, không cho files such as PDF. Trong such cases, bạn có thể dùng đó rel=\»canonical” HTTP header.” (bản dịch) « HTTP header.» Này là đó câu trả lời to “how do I canonicalize a PDF.” (bản dịch) «cách làm I canonicalize một PDF.» - Sitemap inclusion — “A weak signal that helps the URLs that are included in a sitemap become canonical.” (bản dịch) «MỘT yếu tín hiệu đó helps đó URLs đó là được bao gồm trong một sitemap become canonical.» Real, nhưng đó weakest of đó three.
Hai điều worth knowing về cách những interact:
- They stack. Google: “these methods can stack and thus become more effective
when combined.” (bản dịch) «những các phương thức có thể stack và thus become hơn effective
khi combined.» MỘT self-referencing
<link>plus một sạch sitemap plus consistent liên kết nội bộ all pointing cùng cách là far stronger hơn any một alone. - None of them là mandatory. “While we encourage you to use these methods, none of them are required; your site will likely do just fine without specifying a canonical preference.” (bản dịch) «Trong khi we encourage bạn to dùng những các phương thức, none of them là bắt buộc; trang web của bạn sẽ có khả năng làm chỉ fine không có specifying một canonical preference.» Declaring một xóa ambiguity; không declaring một không an lỗi.
Riêng, một 301 chuyển hướng là an even stronger consolidation tín hiệu hơn
rel=canonical — nhưng đây là một khác nhau tool (hơn on canonical so với 301 so với noindex
dưới).
Đó HTTP Link header (và vì sao PDFs cần điều này)
MỘT PDF có không <head>, so có nowhere to put một <link> element. Đó cách sửa là
to gửi đó canonical trong đó HTTP header phản hồi tại đó máy chủ level. Đó shape:
Link: <https://www.example.com/downloads/whitepaper.pdf>; rel="canonical"Bạn configure đó trong máy chủ của bạn (Apache .htaccess, Nginx) hoặc của bạn CDN/edge —
see đó Scripts tab cho hoạt động Apache và Nginx snippets và đó curl -I
command to xác nhận đó header là thực ra đang đã gửi. Đó header phương thức cũng
hoạt động cho HTML, nhưng cho HTML đó <link> element là simpler; reach cho đó
header khi có không markup to edit (PDFs, images, other non-HTML).
Điều này phải được trong đó <head> — đó thân phản hồi-placement trap
Này là đó chế độ lỗi đó burns đó hầu hết mọi người, và đây là gần như luôn
accidental. Google: “Đó rel=“canonical” link element is only accepted if it
appears in the <head> section of the HTML, so make sure at least the <head>
section is valid HTML.” (bản dịch) « link element là chỉ accepted nếu điều này
xuất hiện trong đó <head> section of đó HTML, so hãy bảo đảm ít nhất đó <head>
section là hợp lệ HTML.» Và từ đó 2013 “5 common mistakes” (bản dịch) «5 các lỗi thường gặp» post, vẫn đó
clearest statement of điều này: “When we encounter a rel=canonical designation in the
<body>, it’s disregarded.” (bản dịch) «Khi we encounter một rel=canonical designation trong đó
<body>, đây là disregarded.» Của họ closing line là đó rule trong một sentence:
“rel=canonical designations in the <head> are processed, not the <body>.” (bản dịch) «rel=canonical designations trong đó <head> là processed, không đó <body>.» Evidence for this claim Google accepts an HTML rel=canonical link element only in a valid head section and disregards a canonical placed in the body. Scope: HTML link-element canonicals in Google Search; HTTP-header canonicals are a separate method. Confidence: high · Verified: Google: Common rel=canonical mistakes
Ở đây đó trap. Bạn wrote đó canonical vào đó <head> trong của bạn nguồn. Nhưng
khi đó trang là constructed trong một trình duyệt hoặc được kết xuất by đó công cụ tìm kiếm, đó
<head> có thể end sớm — unclosed tags, JavaScript injected vào đó head, hoặc an
<iframe> trong đó head có thể all prematurely close điều này. Đó canonical thì lands trong
đó được kết xuất <body>, nơi đây là đã bỏ qua. I’ve described chính xác này trong my
JavaScript SEO hướng dẫn: điều like “unclosed tags, JavaScript injected” (bản dịch) «unclosed tags, JavaScript injected» có thể nguyên nhân
đó <head> to end prematurely và throw một canonical vào đó <body> of một
được kết xuất trang “where it will not be respected.” (bản dịch) «nơi điều này sẽ không là respected.»
Đó catch: này là invisible trong view-nguồn — đó thô HTML looks fine. Bạn có to so sánh đó thô HTML to đó được kết xuất DOM (DevTools Elements panel, hoặc GSC URL Inspection được kết xuất HTML) to see nơi đó canonical thực ra ended up.
On đó JavaScript note: Google hướng dẫn là to pick một phương thức và không fight
yourself. “If you can’t set the canonical URL in the HTML source code, leave it
out and only set it with JavaScript.” (bản dịch) «Nếu bạn không thể set đó canonical URL trong đó HTML mã nguồn, leave điều này
out và chỉ set điều này với JavaScript.» Nếu JS injects đó canonical, hãy bảo đảm điều này
injects điều này vào đó <head> properly — không cũng máy chủ-render một khác nhau
một.
Declare một canonical mối quan hệ per trang
Ở đó nên là một unambiguous canonical mối quan hệ per trang. Google hiện tại canonical-phương thức hướng dẫn warns đó combining canonical các phương thức có thể produce các lỗi và unexpected kết quả; điều này không define một đầu tiên-tag hoặc cuối cùng-tag winner. MỘT 2013 Google Search Central post đã nói multiple declarations sẽ có khả năng là đã bỏ qua. Giữ đó as lịch sử khắc phục sự cố context, không một timeless deterministic parser contract: đó safe hiện tại conclusion là to flag đó conflict, expose mỗi HTML và HTTP declaration, và cách sửa đó template.
Đó thông thường nguyên nhân không phải một typo; đây là stacking các hệ thống. Đó CMS injects một, đó
theme injects một, và an SEO plugin injects một — three conflicting declarations.
I’ve flagged này pattern trực tiếp trong my canonicalization deep dive: multiple rel=canonical tags sẽ có khả năng là
đã bỏ qua, và “in many cases this happens because tags are inserted into a system
at different points such as by the CMS, the theme, and plugin(s).” (bản dịch) «trong nhiều cases này happens vì tags là inserted vào một hệ thống
tại khác nhau points such as by đó CMS, đó theme, và plugin(s).» Nếu bạn là
gỡ lỗi một canonical đó “isn’t working,” (bản dịch) «không hoạt động,» count đó tags trong đó được kết xuất DOM
đầu tiên.
Dùng absolute URLs, không relative
Google: “Use absolute paths rather than relative paths with the rel=” (bản dịch) «Dùng absolute paths thay vì relative paths với đó rel=\»canonical”
link element. Even though relative paths are supported by Google, they can cause
problems in the long run.” (bản dịch) «
link element. Mặc dù relative paths là supported by Google, they có thể nguyên nhân
các vấn đề về lâu dài.» Đó reason là mechanical — một <link> “accepts both
relative and absolute URLs,” (bản dịch) «accepts cả hai
relative và absolute URLs,» và một relative href like /page/ resolves so với
đó hiện tại URL. On một malformed base hoặc an unexpected path, đó resolves to
nơi nào đó bạn đã không intend. Luôn ghi đó fully-qualified URL:
<!-- Good -->
<link rel="canonical" href="https://www.example.com/dresses/green/green-dress.html">
<!-- Bad: relative path -->
<link rel="canonical" href="/dresses/green/green-dress.html">Giống nhau logic extends to host và giao thức: point tại đó real, cuối version
(https:// over http://, của bạn canonical host). Và không dùng một URL fragment as
đó canonical — “Google generally doesn’t support URL fragments.” (bản dịch) «Google generally không hỗ trợ URL fragments.»
Self-referencing canonicals và pagination
MỘT trang naming itself as canonical là fine và được khuyến nghị cho của bạn được ưu tiên version — điều này làm của bạn intent unambiguous khi other các tín hiệu không all line up. Khi một kiểm tra says một trang có “no different canonical,” (bản dịch) «không khác nhau canonical,» một self-referencing canonical satisfies đó condition: điều này là an được phép giống nhau-URL declaration, không một competing đích.
Pagination là nơi self-referencing matters hầu hết, và nơi mọi người nhận điều này wrong. Không canonicalize trang 2, 3, 4… of một series back to trang 1. “Specifying a rel=canonical from page 2 (or any later page) to page 1 is not correct use of rel=canonical.” (bản dịch) «Specifying một rel=canonical từ trang 2 (hoặc any sau đó trang) to trang 1 không phải correct dùng of rel=canonical.» Trang 2 không một duplicate of trang 1 — điều này có khác nhau nội dung. Thay vì, “self-referencing canonicals should be used on all paginated pages” (bản dịch) «self-referencing canonicals nên là dùng on all paginated các trang»: mỗi trang là của nó own canonical.
MỘT related over-canonicalization mistake: một category hoặc landing trang đó canonicalizes to một single featured bài viết. Đó category trang và đó bài viết không đó giống nhau nội dung, so đó là một misuse cũng.
không break đó canonical visibility — và không point điều này tại một hỏng đích
MỘT canonical chỉ hoạt động nếu Google có thể crawl trang, đọc đó tag, và không getting một contradicting instruction. đó là một nguồn-side health vấn đề — đây là về liệu Google có thể even see đó tag on đó duplicate URL. Three ways mọi người defeat của họ own canonical này way:
- Blocking đó canonicalized URL trong robots.txt. Nếu bạn
Disallowđó duplicate, Google không thể crawl điều này, so điều này không bao giờ sees đó canonical on điều này — và không thể truyền consolidation. (Google adds đó kicker đó một robots-blocked URL “may still index URLs that are disallowed in robots.txt without their content.” (bản dịch) «có thể vẫn chỉ mục URLs đó là disallowed trong robots.txt không có của họ nội dung.» không dùng robots.txt cho canonicalization.) - Setting đó canonicalized URL to
noindex. Contradictory instructions: noindex says “remove this page,” (bản dịch) «xóa này trang,» canonical says “consolidate this page.” (bản dịch) «consolidate này trang.» không mix them — pick một dựa trên intent. - Returning một 4XX on đó canonicalized URL. Giống nhau effect as noindex: Google không thể đọc đó tag, so điều này không thể transfer consolidation.
Và không declare conflicting canonicals across các phương thức: “Don’t specify
different URLs as canonical for the same page using different canonicalization
techniques” (bản dịch) «không specify
khác nhau URLs as canonical cho đó cùng trang dùng khác nhau canonicalization
techniques» — e.g. một URL trong đó sitemap và một khác nhau một trong rel=canonical.
có một tách biệt, đích-side health vấn đề mọi người miss vì đây là đó
opposite direction: đó URL bạn là pointing to có to là một sạch landing
spot. RFC 6596 says to tránh designating một đích đó là itself đó nguồn of
một chuyển hướng, đó chains to một khác nhau canonical, hoặc đó trả về an lỗi
code — và Google own verification checklist adds confirming đó đích
không carry một noindex tag. MỘT canonical pointed tại một chuyển hướng, chained,
noindexed, hoặc erroring đích là asking Google to consolidate onto một URL đó
không thể thực ra serve as đó representative trang — treat “does the target
return a clean 200 with no redirect, no noindex, and no different canonical
target of its own” (bản dịch) «làm đó đích
trả về một sạch 200 với không chuyển hướng, không noindex, và không khác nhau canonical
đích of của nó own» as của nó own kiểm tra, tách biệt từ liệu đó nguồn trang là
crawlable.
Nếu bạn là dùng hreflang, đó canonical phải trỏ đến một giống nhau-language trang: “specify a canonical page in the same language, or the best possible substitute language if a canonical page doesn’t exist for the same language.” (bản dịch) «specify một canonical trang trong đó giống nhau language, hoặc đó best có thể substitute language nếu một canonical trang không exist cho đó giống nhau language.»
Canonical so với 301 chuyển hướng so với noindex
Những nhận treated as interchangeable. They không — see đó decision bảng trong đó Các bảng tra nhanh tab. Phiên bản ngắn gọn:
rel=canonical— cả hai URLs stay trực tiếp và crawlable; bạn express một preference; Google consolidates các tín hiệu onto đó chosen một. MỘT hint. Dùng điều này khi cả hai URLs phải vẫn accessible và là genuinely duplicate hoặc near-duplicate nội dung (parameters, print versions) — không as một chung cách sửa cho syndicated nội dung; see dưới.- 301 chuyển hướng — người dùng và bots là moved to đó đích; đây là đó strongest consolidation tín hiệu. Dùng điều này khi đó duplicate không nên là reachable tại all.
noindex— một directive đó xóa một trang từ tìm kiếm hoàn toàn (đó trang phải stay crawlable cho Google to see điều này). Dùng điều này to xóa, không consolidate.
Google own preference cho trong-site duplicates là đó canonical: “We don’t recommend using noindex to prevent selection of a canonical page within a single site, because it will completely block the page from Search. rel=” (bản dịch) «We không khuyến nghị dùng noindex to ngăn selection of một canonical trang trong một single site, vì điều này sẽ completely block đó trang từ Tìm kiếm. rel=\»canonical” link annotations are the preferred solution.” (bản dịch) « link annotations là đó được ưu tiên giải pháp.» Evidence for this claim Google recommends rel=canonical rather than noindex when the goal is selecting a canonical within one site, because noindex removes the page from Search. Scope: Google Search guidance for duplicate pages within a single site. Confidence: high · Verified: Google: Specify a canonical URL
Vì sao một canonical nhận đã bỏ qua
Khi Google picks một khác nhau canonical hơn bạn declared, đây là gần như luôn một of những: đó hai URLs không thực ra đó giống nhau nội dung; bạn có multiple hoặc conflicting canonicals; đây là trong đó thân phản hồi; đây là relative/hỏng; đó URL là robots-blocked hoặc trả về 4XX; hoặc stronger các tín hiệu (liên kết nội bộ, sitemap, các chuyển hướng) point elsewhere.
Đó “not actually the same content” (bản dịch) «không thực ra đó giống nhau nội dung» case bites JS-được kết xuất các trang hardest. John Mueller: “With JavaScript based sites, the content side is a common reason for this: for example, if you’re using a SPA-type setup where the static HTML is mostly the same, and JavaScript has to be run in order to see any of the unique content, then if that JS can’t be executed properly, then the content ends up looking the same.” (bản dịch) «Với JavaScript based các trang, đó nội dung side là một phổ biến reason cho này: ví dụ, nếu bạn là dùng một SPA-loại setup nơi đó static HTML là mostly đó giống nhau, và JavaScript có to là chạy trong order to see any of đó unique nội dung, thì nếu đó JS không thể là executed properly, thì đó nội dung ends up looking đó giống nhau.» Nếu Google không thể see đó unique nội dung, điều này không thể tell của bạn “duplicates” apart — và có thể consolidate hoặc split them trong ways bạn đã không intend.
Bing xử lý rel=canonical cùng cách — một clarity tín hiệu, không một cure-all — và
explicitly khuyến nghị điều này cho syndicated nội dung (ask đó partner to point một
canonical tại của bạn original). đó là một real divergence từ Google: Google
hiện tại khắc phục sự cố hướng dẫn says “the canonical link element is not
recommended for those who want to avoid duplication by syndication partners,
because the pages are often very different.” (bản dịch) «đó canonical link element không phải
được khuyến nghị cho những ai muốn to tránh duplication by syndication partners,
vì đó các trang là thường very khác nhau.» Evidence for this claim Google's current troubleshooting guidance does not recommend rel=canonical as the general fix for duplication by syndication partners, because syndicated pages are often materially different from the original. Scope: Google Search guidance for syndicated-content duplication; canonical remains valid where the syndicated copy is a genuine duplicate or superset of the original. Confidence: high · Verified: Google: Fix canonicalization issues
Google cách sửa cho đó cụ thể vấn đề là asking đó syndication partner to
block của họ copy từ đang được lập chỉ mục on của họ end — không một canonical — vì
canonical chỉ hoạt động khi đó đích là genuinely đó giống nhau nội dung, và
syndicated copies thường không close đủ. On đó toolkit, Bing framing là
đó “Canonical tags, redirects, hreflang, noindex, and IndexNow all support
this clarity, but the foundation is a streamlined site that avoids unnecessary
duplication.” (bản dịch) «Canonical tags, các chuyển hướng, hreflang, noindex, và IndexNow all hỗ trợ
này clarity, nhưng đó foundation là một streamlined site đó tránh unnecessary
duplication.» Một divergence worth knowing: cho parameter duplication, Bing
cũng offers URL Normalization trong Bing Quản trị viên web Tools as của nó được ưu tiên cách sửa.
Cách kiểm thử điều này
Đó numbered workflow lives trong đó Checklists tab; đó commands là trong Scripts. Đó core moves:
- View-nguồn đó trang — là ở đó chính xác một
<link rel="canonical">, trong đó<head>, với an absolute URL? - So sánh to đó được kết xuất DOM (DevTools / GSC được kết xuất HTML) — đã làm điều này stay
trong đó
<head>, và là điều này vẫn đó chỉ một sau rendering? curl -Iđó URL cho đó HTTPLink: rel="canonical"header (này là cách bạn kiểm tra PDFs và non-HTML).- GSC URL Inspection — so sánh Người dùng-declared canonical to Google-được chọn canonical. MỘT mismatch là của bạn tín hiệu to investigate vì sao. Hai caveats: đó được lập chỉ mục kết quả có thể lag điều gì là thực ra happening by hours, và đó trực tiếp kiểm thử chỉ xác nhận đó URL là fetchable hiện tại — điều này không thể predict mà URL Google sẽ select as canonical.
- Crawl đó site (Ahrefs Site Audit, free qua Ahrefs Quản trị viên web Tools cho các trang bạn verify; hoặc Screaming Frog) to catch canonical các vấn đề tại scale.
Cho đó rộng hơn topic — cách Google thực ra chọn một canonical từ ~40 các tín hiệu — see đó canonicalization hub. Sibling các vấn đề like duplicate nội dung và URL parameters là đó thông thường reasons bạn là reaching cho một canonical trong đó đầu tiên place.
AI summary
MỘT condensed take on đó Advanced version:
rel=canonicallà một hint, không một rule. Google calls điều này một mạnh tín hiệu nhưng có thể override điều này khi other các tín hiệu disagree. Điều này declares của bạn preference; điều này không force đó other URL out of tìm kiếm.- Three hợp lệ declaration các phương thức: HTML
<link rel="canonical">trong đó<head>(mạnh), đó HTTPLink: rel="canonical"header (đó chỉ way cho PDFs/non-HTML), và sitemap inclusion (yếu). They stack; none là bắt buộc. MỘT 301 chuyển hướng là một tách biệt, stronger consolidation tín hiệu. <head>chỉ. Trong đó<body>đây là disregarded. Đó phổ biến nguyên nhân là accidental: unclosed tags / injected JS / iframes close đó<head>sớm during rendering, pushing đó canonical vào đó thân phản hồi. Catch điều này by comparing thô HTML to đó được kết xuất DOM.- Một unambiguous declaration per trang. Multiple declarations là một conflict, không một được ghi lại đầu tiên-wins hoặc cuối cùng-wins rule. Thông thường nguyên nhân: CMS + theme + plugin mỗi injecting một.
- Absolute URLs, correct host/giao thức, không URL fragments. Relative paths resolve so với đó hiện tại URL và có thể point nơi nào đó wrong.
- Self-reference được ưu tiên các trang. không canonicalize một paginated series to trang 1 — self-reference mỗi trang. không canonicalize một category to một featured bài viết.
- không defeat điều này: không
noindex+ canonical on đó giống nhau intent, không robots.txt block on đó canonicalized URL, không 4XX — mỗi dừng Google reading hoặc honoring đó tag. không declare conflicting canonicals across các phương thức. - Canonical so với 301 so với noindex: canonical giữ cả hai URLs trực tiếp (hint); 301 moves mọi thứ (strongest); noindex xóa một trang (directive). Google prefers canonical over noindex cho trong-site duplicates.
- Vì sao đây là đã bỏ qua: nội dung không thực ra tương đương (phổ biến on JS/SPA các trang), multiple/conflicting tags, thân phản hồi placement, robots/4XX, hoặc stronger các tín hiệu elsewhere.
- Kiểm thử với view-nguồn so với được kết xuất DOM,
curl -Icho đó header, và GSC URL Inspection (Người dùng-declared so với Google-được chọn).
Tài liệu chính thức
Chính-nguồn tài liệu từ đó các công cụ tìm kiếm.
- Cách specify một canonical URL với rel=canonical và other các phương thức — đó implementation doc: đó supported các phương thức và của họ strengths,
<head>requirement, absolute URLs, đó HTTPLinkheader cho PDFs, và đó “don’ts.” - Điều gì là URL canonicalization — đó concept doc, including đó load-bearing “a hint, not a rule” (bản dịch) «một hint, không một rule» line và đó các tín hiệu Google weighs.
- 5 các lỗi thường gặp với rel=canonical (Tìm kiếm Central Blog, 2013) — đó original nguồn cho “only one per page → all ignored” (bản dịch) «chỉ một per trang → all đã bỏ qua» và “in the
<body>it’s disregarded.” (bản dịch) «trong đó<body>đây là disregarded.» - Cách sửa canonicalization các vấn đề (khắc phục sự cố) — decoding đó Search Console trạng thái like “Duplicate, Google chose a different canonical than user.” (bản dịch) «Duplicate, Google chose một khác nhau canonical hơn người dùng.»
- Block tìm kiếm lập chỉ mục (noindex) — khi bạn muốn một trang đã xóa (noindex), không consolidated (canonical).
Bing / Microsoft
- Làm Duplicate Nội dung Hurt SEO và AI Khả năng hiển thị trên tìm kiếm? (Canel & Madhavan, Dec 2025) — Bing hiện tại take, including recommending
rel=canonicalcho syndicated nội dung. - Tốt hơn hơn canonical; URL Normalization (Canel, 2012) — Bing được ưu tiên cách sửa cho parameter duplication: URL Normalization trong Bing Quản trị viên web Tools.
Quotes từ đó nguồn
On-đó-record statements từ Google và Bing. Mỗi link là một deep link đó jumps to đó quoted passage on đó trang nguồn.
Google — đây là một hint, không một rule
- “indicating a canonical preference is a hint, not a rule.” (bản dịch) «indicating một canonical preference là một hint, không một rule.» — Google Search Central tài liệu. Jump to quote
- “Canonicalization is the process of selecting the representative –canonical– URL of a piece of content.” (bản dịch) «Canonicalization là đó xử lý of selecting đó representative –canonical– URL of một piece of nội dung.» Jump to quote
Google — đó supported các phương thức và của họ strength
- “A strong signal that the specified URL should become canonical.” (bản dịch) «MỘT mạnh tín hiệu đó đó specified URL nên become canonical.» (rel=canonical) — Google Search Central tài liệu. Jump to quote
- “A weak signal that helps the URLs that are included in a sitemap become canonical.” (bản dịch) «MỘT yếu tín hiệu đó helps đó URLs đó là được bao gồm trong một sitemap become canonical.» (sitemaps) Jump to quote
- “While we encourage you to use these methods, none of them are required; your site will likely do just fine without specifying a canonical preference.” (bản dịch) «Trong khi we encourage bạn to dùng những các phương thức, none of them là bắt buộc; trang web của bạn sẽ có khả năng làm chỉ fine không có specifying một canonical preference.» Jump to quote
Google — placement, absolute URLs, và đó HTTP header
- “Đó rel=“canonical” link element is only accepted if it appears in the
<head>section of the HTML, so make sure at least the<head>section is valid HTML.” (bản dịch) « link element là chỉ accepted nếu điều này xuất hiện trong đó<head>section of đó HTML, so hãy bảo đảm ít nhất đó<head>section là hợp lệ HTML.» Jump to quote - “Use absolute paths rather than relative paths with the rel=” (bản dịch) «Dùng absolute paths thay vì relative paths với đó rel=\»canonical” link element. Even though relative paths are supported by Google, they can cause problems in the long run.” (bản dịch) « link element. Mặc dù relative paths là supported by Google, they có thể nguyên nhân các vấn đề về lâu dài.» Jump to quote
- “…a link HTTP response header with a rel=” (bản dịch) «…một link HTTP header phản hồi với một rel=\»canonical” target attribute as defined by RFC5988 rather than an HTML element to indicate the canonical URL for a document supported by Search, including non-HTML documents such as PDF files.” (bản dịch) « đích thuộc tính as được định nghĩa by RFC5988 thay vì an HTML element to indicate đó canonical URL cho một document supported by Tìm kiếm, including non-HTML documents such as PDF files.» Jump to quote
- “Only works for HTML pages, not for files such as PDF. In such cases, you can use the rel=” (bản dịch) «Chỉ hoạt động cho HTML các trang, không cho files such as PDF. Trong such cases, bạn có thể dùng đó rel=\»canonical” HTTP header.” (bản dịch) « HTTP header.» Jump to quote
Lịch sử Google hướng dẫn — chỉ một per trang (2013 “5 common mistakes” (bản dịch) «5 các lỗi thường gặp»)
- “When more than one is specified, all rel=canonical links will be ignored.” (bản dịch) «Khi hơn một là specified, all rel=canonical links sẽ là đã bỏ qua.» — Google Quản trị viên web Central Blog (2013). Này là hữu ích chronology; hiện tại Google tài liệu warns về các lỗi và unexpected kết quả không có specifying một deterministic duplicate-tag outcome. Jump to quote
- “When we encounter a rel=canonical designation in the
<body>, it’s disregarded.” (bản dịch) «Khi we encounter một rel=canonical designation trong đó<body>, đây là disregarded.» Jump to quote - “Specifying a rel=canonical from page 2 (or any later page) to page 1 is not correct use of rel=canonical.” (bản dịch) «Specifying một rel=canonical từ trang 2 (hoặc any sau đó trang) to trang 1 không phải correct dùng of rel=canonical.» Jump to quote
Google — canonical được ưu tiên over noindex; conflicting các phương thức
- “We don’t recommend using noindex to prevent selection of a canonical page within a single site, because it will completely block the page from Search. rel=” (bản dịch) «We không khuyến nghị dùng noindex to ngăn selection of một canonical trang trong một single site, vì điều này sẽ completely block đó trang từ Tìm kiếm. rel=\»canonical” link annotations are the preferred solution.” (bản dịch) « link annotations là đó được ưu tiên giải pháp.» Jump to quote
- “Don’t specify different URLs as canonical for the same page using different canonicalization techniques…” (bản dịch) «không specify khác nhau URLs as canonical cho đó cùng trang dùng khác nhau canonicalization techniques…» Jump to quote
John Mueller, Google — vì sao một canonical nhận đã bỏ qua on JS các trang
- “With JavaScript based sites, the content side is a common reason for this: for example, if you’re using a SPA-type setup where the static HTML is mostly the same, and JavaScript has to be run in order to see any of the unique content, then if that JS can’t be executed properly, then the content ends up looking the same.” (bản dịch) «Với JavaScript based các trang, đó nội dung side là một phổ biến reason cho này: ví dụ, nếu bạn là dùng một SPA-loại setup nơi đó static HTML là mostly đó giống nhau, và JavaScript có to là chạy trong order to see any of đó unique nội dung, thì nếu đó JS không thể là executed properly, thì đó nội dung ends up looking đó giống nhau.» (Relayed qua Search Engine Journal, 2019.) Jump to quote
Fabrice Canel & Krishna Madhavan, Microsoft Bing
- “Canonical tags, redirects, hreflang, noindex, and IndexNow all support this clarity, but the foundation is a streamlined site that avoids unnecessary duplication.” (bản dịch) «Canonical tags, các chuyển hướng, hreflang, noindex, và IndexNow all hỗ trợ này clarity, nhưng đó foundation là một streamlined site đó tránh unnecessary duplication.» Đọc đó post
Canonical implementation & QA checklist
Chạy này on any trang (hoặc template) bạn là canonicalizing:
- Chính xác một
<link rel="canonical">on đó trang — counted trong đó được kết xuất DOM, không chỉ view-nguồn (CMS + theme + plugin có thể mỗi thêm một). - Đó tag là trong đó
<head>, as sớm as có thể — và vẫn trong đó<head>sau rendering (không unclosed tags / injected JS / iframes pushing điều này down). - Đó
hreflà an absolute, fully-qualified URL (https://www.example.com/page/), không một relative/page/path và không một URL fragment. - Điều này points tại đó correct host và giao thức (
https://overhttp://, của bạn canonical host) và đó URL thực ra trả về200. - Đó đích itself là một sạch landing spot — điều này không chuyển hướng,
không chain to một khác nhau canonical, và không
noindexed. (Này là một tách biệt kiểm tra từ nguồn-side crawlability trên.) - Được ưu tiên các trang self-reference (point của họ canonical tại themselves).
- Paginated các trang self-reference — they làm không canonicalize to trang 1.
- Đó canonicalized (duplicate) URL là không blocked trong
robots.txt, khôngnoindex, và làm không trả về một 4XX — Google phải được able to đọc đó tag. - Không conflicting canonical across các phương thức (sitemap URL so với
<link>so với header all agree). - Cho PDFs / non-HTML, đó canonical là đã gửi qua đó HTTP
Linkheader (verified vớicurl -I). - Nếu dùng hreflang, đó canonical points to một giống nhau-language trang.
- GSC URL Inspection cho thấy Google-được chọn canonical matching của bạn Người dùng-declared canonical (investigate any mismatch).
Canonical các bảng tra nhanh
Canonical so với 301 chuyển hướng so với noindex — mà to dùng
| Goal | Dùng | Cả hai URLs stay trực tiếp? | Strength |
|---|---|---|---|
| Cả hai URLs phải stay accessible và là genuinely duplicate nội dung; consolidate các tín hiệu (params, print versions) | rel=canonical | Có | Mạnh hint (có thể là overridden) |
| Đó duplicate không nên là reachable tại all | 301 chuyển hướng | Không (moved) | Strongest consolidation tín hiệu |
| Xóa một trang từ tìm kiếm hoàn toàn | noindex | Có, nhưng dropped từ chỉ mục | Directive (obeyed) |
Google preference cho trong-site duplicates: rel=canonical over noindex.
Hợp lệ so với không hợp lệ canonical placement
| Placement / form | Hợp lệ? | Vì sao |
|---|---|---|
<link rel="canonical"> trong đó <head> | ✅ | Đó accepted location |
Giống nhau tag trong đó <body> (incl. accidentally sau rendering) | ❌ | “In the <body>, it’s disregarded” (bản dịch) «Trong đó <body>, đây là disregarded» |
HTTP Link: rel="canonical" header | ✅ | Bắt buộc cho PDFs / non-HTML |
| URL trong một sitemap | ✅ (yếu) | MỘT weaker tín hiệu hơn đó <link> |
Multiple <link rel="canonical"> on một trang | ❌ | Conflicting declarations; outcome không phải một đầu tiên/cuối cùng contract |
Relative href (/page/) | ⚠️ | Supported nhưng discouraged — resolves so với hiện tại URL |
| URL fragment as canonical | ❌ | Google generally không hỗ trợ fragments |
| Canonical on một robots.txt-blocked hoặc 4XX URL | ❌ | Google không thể đọc đó tag |
Đó cách sửa-điều này map
| Symptom | Có khả năng nguyên nhân | Cách sửa |
|---|---|---|
| GSC: “Duplicate, Google chose a different canonical than user” (bản dịch) «Duplicate, Google chose một khác nhau canonical hơn người dùng» | Nội dung không tương đương, hoặc stronger các tín hiệu point elsewhere | Làm đó URLs truly duplicate, hoặc align liên kết nội bộ/sitemap/các chuyển hướng |
| Canonical “đã bỏ qua” hoàn toàn | Multiple tags, hoặc đây là trong đó <body> sau rendering | Một tag, trong đó <head>; so sánh thô so với được kết xuất DOM |
| Canonical points nơi nào đó unexpected | Relative href resolving so với một bad base | Dùng absolute URLs |
| PDF sẽ không consolidate | Không <head> to hold một <link> | Gửi đó HTTP Link header |
Kiểm thử & implementing canonicals
Kiểm thử đó HTML canonical (macOS / Linux)
Pull đó thô HTML và grep cho đó tag — này cho thấy điều gì là trong đó nguồn (trước JS rendering):
# Show every rel=canonical the server sends in the raw HTML
curl -sL https://www.example.com/page/ | grep -i 'rel=["'"'"']\?canonical'Nếu đó trả về hơn một line, bạn có một multiple-canonical vấn đề; không assume một đầu tiên/cuối cùng winner hoặc một guaranteed bỏ qua-all outcome. Nếu điều này trả về không có gì nhưng đó trang “có” một canonical, đây là probably đang injected by JavaScript — kiểm tra đó được kết xuất DOM thay vì (DevTools Elements panel, hoặc GSC URL Inspection → “View crawled page” (bản dịch) «View được crawl trang» / được kết xuất HTML). Đó thân phản hồi-placement trap là chỉ visible trong đó được kết xuất DOM, so luôn cross-kiểm tra.
Kiểm thử đó HTTP Link header (cho PDFs / non-HTML)
# -I = headers only; look for a Link: ...; rel="canonical" line
curl -sI https://www.example.com/downloads/whitepaper.pdf | grep -i '^link:'
# Expected:
# link: <https://www.example.com/downloads/whitepaper.pdf>; rel="canonical"Gửi đó HTTP Link header — Apache (.htaccess)
# Canonical header for a specific PDF
<Files "whitepaper.pdf">
Header set Link '<https://www.example.com/downloads/whitepaper.pdf>; rel="canonical"'
</Files>Gửi đó HTTP Link header — Nginx
location = /downloads/whitepaper.pdf {
add_header Link '<https://www.example.com/downloads/whitepaper.pdf>; rel="canonical"';
}Nền tảng notes
- WordPress + Yoast (hoặc Xếp hạng Math): một self-referencing canonical là đã thêm tự động; set một custom một trong đó post Advanced SEO settings. Nếu bạn cũng có một theme hoặc another plugin emitting một canonical, bạn’ll nhận duplicates — audit đó được kết xuất DOM và disable đó extra nguồn.
- Shopify: themes output một canonical trong
theme.liquid/templates theo mặc định (thường{{ canonical_url }}). To override per-template, edit đó Liquid; cho non-HTML assets bạn không thể edit một<head>, so dùng an app hoặc edge/CDN rule to thêm đó HTTPLinkheader. - Tiếp theo.js / SPAs: máy chủ-render đó canonical (qua đó framework metadata
API /
<head>output). không rely on client-side JS to inject điều này — nếu đó JS không execute during rendering, hoặc điều này injects đó tag vào đó thân phản hồi, đó canonical là lost. (Này là đó JS-nội dung case Mueller mô tả.)
Đó mental models
1. Declare so với decide. Bạn declare một preference với đó canonical tag; Google decides during canonicalization, weighing của bạn tag so với roughly 40 các tín hiệu — một hình Google own Allan Scott có put on đó record. Đó tag là một mạnh input, không bao giờ đó cuối word. Nếu declared và được chọn canonicals disagree, đó nội dung hoặc đó other các tín hiệu là đó vấn đề — không đó tag wording.
2. Hint, không directive — so pick đó right tool cho đó goal.
- Giữ cả hai URLs trực tiếp + consolidate → canonical (một hint).
- Xóa đó duplicate từ existence → 301 (strongest, behavior-thay đổi).
- Xóa một trang từ đó chỉ mục → noindex (một directive). không reach cho canonical khi bạn thực ra có nghĩa là “delete this from search.” (bản dịch) «delete này từ tìm kiếm.»
3. Visibility đầu tiên.
MỘT canonical chỉ được tính nếu Google có thể crawl trang, đọc đó tag trong đó
<head>, và tìm thấy chính xác một of điều này. Bất cứ điều gì đó breaks visibility —
robots.txt block, 4XX, noindex, thân phản hồi placement, multiple tags — silently defeats
điều này. Debug visibility trước bạn debug intent.
4. Thô so với được kết xuất. Hai views of mỗi trang: đó thô HTML đó máy chủ gửi, và đó DOM sau đó trình duyệt/renderer xây dựng điều này. Canonicals có thể truyền đó đầu tiên và fail đó second (pushed vào đó thân phản hồi, hoặc một second một injected). Luôn kiểm tra cả hai.
5. Sameness là đó precondition. Canonical consolidates đúng duplicates/near-duplicates. Nếu đó hai URLs không genuinely đó giống nhau nội dung (phổ biến khi JS có to chạy to reveal đó unique part), Google có thể decide bạn đã làm một mistake và chỉ mục đó “non-canonical” (bản dịch) «non-canonical» URL anyway.
Các tài nguyên worth của bạn time
My related writing
- Canonical Tags Explained: Vì sao They Quan trọng Cho SEO — đó Ahrefs implementation hướng dẫn I review (byline Joshua Hardwick): đó golden rules, đó phổ biến-mistakes list, và đó kiểm thử approach.
- Google Dùng ~40 Các tín hiệu canonicalization — my deep dive on đó selection side: đó đầy đủ tín hiệu inventory và đó hint-so với-mạnh-tín hiệu framing.
- Đó Beginner Hướng dẫn to SEO kỹ thuật — nơi canonicalization sits trong đó bigger picture.
- JavaScript SEO Các vấn đề & Thực hành tốt nhất — đó rendering side behind đó thân phản hồi-placement và “content looks the same” (bản dịch) «nội dung looks đó giống nhau» failures.
Chính thức
- Cách specify một canonical URL (Google) — đó implementation doc.
- 5 các lỗi thường gặp với rel=canonical (Google, 2013) — vẫn đó clearest nguồn cho đó các chế độ lỗi.
Từ others
- Yoast — rel=canonical: đó ultimate hướng dẫn — mạnh on đó concept và WordPress/Yoast setup.
- Google John Mueller Giải thích Vì sao Rel=Canonical Là Sometimes Đã bỏ qua (Search Engine Journal, 2019) — Mueller verbatim lời giải thích of vì sao SPA/JS các trang thường nhận đó wrong canonical được chọn.
- Google Clarifies Simultaneous Dùng of Canonical & Noindex (Search Engine Journal, 2024) — covers đó conflicting-instructions vấn đề khi cả hai tags xuất hiện on đó cùng trang.
- Google: Có Rel Canonical không Bảo đảm Google Picks Up Đó Trang As Canonical (Công cụ tìm kiếm Roundtable) — Mueller on rel=canonical as một tín hiệu, không phải là bảo đảm.
- Semrush — Canonical URLs: SEO Thực hành tốt nhất, Các vấn đề thường gặp, và Cách Cách sửa Them — hữu ích cho decoding GSC canonical lỗi trạng thái.
- r/TechSEO — đó community cho canonical/chỉ mục gỡ lỗi.
Quotes worth citing
Đó lines I giữ coming back to khi explaining canonicals — mỗi là một deep link to đó nguồn passage.
- đây là một hint. “indicating a canonical preference is a hint, not a rule.” (bản dịch) «indicating một canonical preference là một hint, không một rule.» — Google. Jump to quote
- Lịch sử duplicate hướng dẫn. “When more than one is specified, all rel=canonical links will be ignored.” (bản dịch) «Khi hơn một là specified, all rel=canonical links sẽ là đã bỏ qua.» — Google (2013); hiện tại tài liệu mô tả conflicting các phương thức as lỗi-prone thay vì defining một parser outcome. Jump to quote
<head>chỉ. “When we encounter a rel=canonical designation in the<body>, it’s disregarded.” (bản dịch) «Khi we encounter một rel=canonical designation trong đó<body>, đây là disregarded.» — Google (2013). Jump to quote- PDFs dùng đó header. “Only works for HTML pages, not for files such as PDF. In such cases, you can use the rel=” (bản dịch) «Chỉ hoạt động cho HTML các trang, không cho files such as PDF. Trong such cases, bạn có thể dùng đó rel=\»canonical” HTTP header.” (bản dịch) « HTTP header.» — Google. Jump to quote
- Canonical over noindex. “rel=“canonical” link annotations are the preferred solution.” (bản dịch) « link annotations là đó được ưu tiên giải pháp.» — Google. Jump to quote
- Vì sao đây là đã bỏ qua on JS các trang. “…if that JS can’t be executed properly, then the content ends up looking the same.” (bản dịch) «…nếu đó JS không thể là executed properly, thì đó nội dung ends up looking đó giống nhau.» — John Mueller, Google. (Relayed qua Search Engine Journal, 2019.) Jump to quote
Canonical implementation mistakes to tránh
Những là đó cụ thể ways mọi người break một canonical tag trong khi trying to set một up. Mỗi một là một real, phổ biến pattern — không một hypothetical.
- Stacking multiple
rel=canonicaltags on một trang. Vì sao đây là wrong: đó declarations conflict, và hiện tại hướng dẫn cho không dependable đầu tiên/cuối cùng outcome. Đó thông thường nguyên nhân là đó CMS, đó theme, và an SEO plugin mỗi injecting của họ own. Làm thay vì: count đó<link rel="canonical">tags trong đó được kết xuất DOM (không chỉ view-nguồn) và hãy bảo đảm chỉ một nguồn là emitting điều này. - Leaving đó canonical to là pushed vào đó
<body>. Vì sao đây là wrong: “When we encounter a rel=canonical designation in the<body>, it’s disregarded.” (bản dịch) «Khi we encounter một rel=canonical designation trong đó<body>, đây là disregarded.» Này thường không một typo — unclosed tags, JavaScript injected vào đó head, hoặc an<iframe>trong đó head có thể close đó<head>sớm during rendering. Làm thay vì: so sánh đó thô HTML to đó được kết xuất DOM (DevTools Elements panel hoặc GSC được kết xuất HTML) — đó trap là invisible trong view-nguồn alone. - Writing một relative
hrefthay vì an absolute URL. Vì sao đây là wrong: một relative path like/page/resolves so với đó hiện tại URL, so on một malformed base hoặc unexpected path điều này có thể resolve nơi nào đó bạn đã không intend. Relative paths là supported nhưng “can cause problems in the long run.” (bản dịch) «có thể nguyên nhân các vấn đề về lâu dài.» Làm thay vì: luôn ghi đó fully-qualifiedhttps://www.example.com/page/form. - Canonicalizing trang 2, 3, 4… of một paginated series back to trang 1. Vì sao đây là wrong: sau đó các trang không duplicates of trang 1 — they có khác nhau nội dung, so “specifying a rel=canonical from page 2 (or any later page) to page 1 is not correct use of rel=canonical.” (bản dịch) «specifying một rel=canonical từ trang 2 (hoặc any sau đó trang) to trang 1 không phải correct dùng of rel=canonical.» Làm thay vì: let mỗi paginated trang self-reference của nó own canonical.
- Canonicalizing một category hoặc landing trang to một single featured bài viết. Vì sao đây là wrong: đó category trang và đó bài viết không đó giống nhau nội dung — này là over-canonicalization, không consolidation. Làm thay vì: let đó category trang self-reference; dùng canonical chỉ cho genuine duplicates/near-duplicates.
- Pairing một canonical với
noindexon đó dự kiến-to-consolidate URL. Vì sao đây là wrong: đó hai instructions contradict mỗi other —noindexsays “remove this page,” (bản dịch) «xóa này trang,» canonical says “consolidate this page.” (bản dịch) «consolidate này trang.» Làm thay vì: decide by intent: consolidate → canonical chỉ; xóa hoàn toàn →noindexchỉ. - Blocking đó canonicalized URL trong
robots.txt. Vì sao đây là wrong: nếu Google không thể crawl đó duplicate URL, điều này không bao giờ sees đó canonical tag on điều này, so điều này không thể truyền consolidation — và một robots-blocked URL “may still index … without their content.” (bản dịch) «có thể vẫn chỉ mục … không có của họ nội dung.» Làm thay vì: leave đó duplicate crawlable và let đó canonical (không robots.txt) làm đó consolidating. - Returning một 4XX on đó canonicalized URL. Vì sao đây là wrong: giống nhau failure
as robots-blocking — Google không thể đọc một tag on một trang điều này không thể fetch.
Làm thay vì: giữ đó canonicalized URL trực tiếp và returning
200nếu bạn muốn của nó các tín hiệu consolidated onto đó được ưu tiên version.
Canonical, 301 chuyển hướng, hoặc noindex — mà một làm I cần?
Bắt đầu từ điều gì bạn muốn to happen to đó duplicate URL, không từ mà tag sounds hầu hết “kỹ thuật.”
Which tool should I use for a duplicate or near-duplicate URL?
Đó một-line version: giữ cả hai trực tiếp và chỉ express một preference → canonical. Move mọi thứ to một URL → 301. Giữ đó trang up nhưng out of tìm kiếm → noindex. không reach cho canonical khi điều gì bạn thực ra có nghĩa là là “delete this from search” (bản dịch) «delete này từ tìm kiếm» — đó là noindex job, không canonical.
Ready-to-dùng AI prompts
Sao chép và dán starting points cho auditing hoặc gỡ lỗi canonical tags với an LLM. Luôn verify đó output so với đó được kết xuất trang và GSC — những là drafting aids, không một substitute cho thực ra kiểm tra đó HTML.
Audit một trang canonical implementation
Ở đây là đó thô HTML
<head>và đó được kết xuất DOM<head>cho này URL: [paste cả hai]. Kiểm tra cho: (1) chính xác một<link rel="canonical">present, (2) đây là an absolute URL không một relative path, (3) điều này stayed trong đó<head>sau rendering thay vì getting pushed vào đó<body>, (4) điều này không canonicalizing một paginated trang back to trang 1 hoặc một category to một single bài viết. List mỗi rule đó fails và quote đó chính xác line đó là wrong.
Giải thích một Search Console canonical mismatch
Google Search Console’s URL Inspection cho thấy một Người dùng-declared canonical of [URL MỘT] và một Google-được chọn canonical of [URL B] cho này trang. Được cho đó rel=canonical là một hint Google có thể override, list đó hầu hết có khả năng reasons cho này cụ thể mismatch trong priority order (nội dung không thực ra tương đương, conflicting liên kết nội bộ/sitemap/các chuyển hướng, multiple canonical tags, thân phản hồi placement) và điều cần kiểm tra cho mỗi.
Draft đó HTTP Link header cho một non-HTML file
I cần to canonicalize này PDF (hoặc other non-HTML file) tại [URL] dùng đó HTTP
Link: rel="canonical"header phản hồi thay vì an HTML<link>element, since PDFs có không<head>. My máy chủ là [Apache / Nginx / other]. Cho me đó chính xác config snippet và đócurl -Icommand I nên chạy afterward to xác nhận đó header là thực ra đang đã gửi.
Sanity-kiểm tra một canonical so với 301 so với noindex decision
I có một duplicate URL tại [URL] và một được ưu tiên URL tại [URL]. Cả hai hiện tại [stay trực tiếp / một nên disappear — mô tả]. Dựa trên đó rule đó canonical là một hint cho URLs đó phải cả hai stay reachable, một 301 là đó strongest option khi đó duplicate không nên exist tại all, và noindex xóa một trang từ tìm kiếm hoàn toàn, tell me mà một fits my situation và vì sao đó other hai không.
Tools cho auditing canonical tags
Đó đã hoàn tất Canonicalization Checker walkthrough trong đó Advanced lens covers đó chính single-trang audit. Những tools là hữu ích alongside điều này:
- Chuyển hướng Checker — hữu ích alongside đó canonical checker khi bạn là deciding giữa canonical và một 301: cho thấy mỗi hop và đó cuối mã trạng thái cho một URL.
- GSC URL Inspection — Google own so sánh of của bạn Người dùng-declared canonical so với của nó Google-được chọn canonical; đó fastest way to see liệu Google agrees với của bạn tag.
curl -I— đó quickest way to xác nhận an HTTPLink: rel="canonical"header là thực ra đang đã gửi cho một PDF hoặc other non-HTML file.- Ahrefs Site Audit (free qua Ahrefs Quản trị viên web Tools cho verified các trang) hoặc Screaming Frog — crawl đó toàn bộ site to catch canonical các vấn đề (multiples, relative URLs, mismatches) tại scale thay vì một trang tại một time.
Các vấn đề thường gặp
GSC cho thấy “Duplicate, Google chose a different canonical than user” (bản dịch) «Duplicate, Google chose một khác nhau canonical hơn người dùng»
Nguyên nhân: của bạn declared canonical disagrees với điều gì Google thực ra được chọn — thường vì đó hai URLs không genuinely đó giống nhau nội dung, hoặc vì liên kết nội bộ, đó sitemap, hoặc các chuyển hướng consistently point tại đó other URL, outweighing của bạn tag. Cách sửa: xác nhận đó nội dung là truly tương đương (này là đó hầu hết phổ biến JS/SPA failure — nếu unique nội dung chỉ xuất hiện sau JavaScript chạy và đó JS không thể execute properly, Google sees đó các trang as hơn alike hơn they là); thì align liên kết nội bộ và đó sitemap to all point tại đó giống nhau URL bạn declared as canonical.
Đó tag looks right trong view-nguồn nhưng không đang honored
Nguyên nhân: đó canonical là getting pushed out of đó <head> during
rendering — an unclosed tag, injected JavaScript, hoặc an <iframe> trong đó head
closed điều này sớm, và đó tag landed trong đó <body>, nơi đây là disregarded.
Cách sửa: so sánh đó thô HTML to đó được kết xuất DOM (DevTools Elements panel,
hoặc GSC URL Inspection được kết xuất HTML) — này failure là invisible trong
view-nguồn alone, so luôn kiểm tra cả hai.
MỘT trang seems to có một canonical, nhưng không có gì là đang consolidated
Nguyên nhân: either có multiple rel=canonical tags on đó trang (CMS +
theme + plugin mỗi thêm một, so all of them là đã bỏ qua), hoặc đó
canonicalized URL là blocked trong robots.txt hoặc returning một 4XX, so Google
không bao giờ đọc đó tag tại all.
Cách sửa: curl -sL đó trang và count đó canonical lines trong đó thô HTML; nếu
có hơn một, xóa đó extra sources. Riêng, xác nhận đó
canonicalized URL là crawlable và trả về 200.
MỘT PDF hoặc other non-HTML file sẽ không consolidate
Nguyên nhân: có không <head> on một PDF, so một <link rel="canonical"> element
có nowhere to go — và không header đã là configured to carry đó tín hiệu thay vì.
Cách sửa: gửi đó canonical qua đó HTTP Link: rel="canonical" phản hồi
header tại đó máy chủ hoặc CDN level, thì xác nhận đây là present với
curl -sI <url> | grep -i '^link:'.
Đó canonical points tại một URL đó các chuyển hướng, chains, hoặc là noindexed
Nguyên nhân: đó đích — đó URL bạn là pointing to — không một sạch landing
spot. RFC 6596 cụ thể warns so với designating một đích đó là itself
đó nguồn of một chuyển hướng, đó chains to một khác nhau canonical, hoặc đó
trả về an lỗi code; một đích carrying noindex là đó giống nhau vấn đề trong
practice. Này là một distinct failure từ nguồn-side crawlability (robots.txt,
noindex, hoặc 4XX on đó duplicate URL) — ở đây đó duplicate là fine, nhưng đó
đích không một hợp lệ place to consolidate onto.
Cách sửa: point đó canonical trực tiếp tại đó cuối, trực tiếp, 200-returning,
non-noindexed URL — không bao giờ tại một URL đó itself các chuyển hướng hoặc có của nó own
khác nhau canonical.
Đó canonical giữ getting đã bỏ qua even sau sửa placement và duplicates
Nguyên nhân: điều gì đó là vẫn telling Google đó các trang không tương đương, hoặc một
conflicting tín hiệu tồn tại elsewhere — một khác nhau URL specified trong đó
sitemap, hoặc noindex on đó URL bạn là trying to consolidate.
Cách sửa: kiểm tra đó sitemap và any noindex tags cho conflicts với của bạn
declared canonical, và re-chạy GSC URL Inspection sau mỗi thay đổi to see nếu
đó Google-được chọn canonical moves toward điều gì bạn declared.
Prove đó canonical là thực ra hoạt động
bạn đã đã thêm hoặc fixed một canonical tag. Những kiểm tra tách biệt “the tag exists in my source code” (bản dịch) «đó tag tồn tại trong my mã nguồn» từ “Google is actually consolidating onto it.” (bản dịch) «Google là thực ra consolidating onto điều này.»
Kiểm thử 1 — Chính xác một canonical, trong đó được kết xuất head
- Kiểm thử to chạy — View-nguồn đó trang và riêng inspect đó được kết xuất DOM (DevTools Elements panel, hoặc chạy điều này qua đó Canonicalization Checker).
- Dự kiến kết quả — Chính xác một
<link rel="canonical">, vẫn bên trong đó<head>sau rendering, với an absolute URL. - Failure interpretation — Hơn một tag trong đó thô HTML có nghĩa là all of
them sẽ là đã bỏ qua (CMS + theme + plugin mỗi thêm một). MỘT tag present trong
view-nguồn nhưng missing từ đó được kết xuất
<head>có nghĩa là điều này đã nhận pushed vào đó<body>during rendering — kiểm tra cho unclosed tags, injected JS, hoặc an<iframe>trong đó head. - Monitoring window — Immediate — này là một static kiểm tra of đó hiện tại trang.
- Rollback trigger — Nếu đó được kết xuất
<head>không bao giờ carries đó tag không quan trọng điều gì bạn cách sửa, dừng editing đó canonical và audit whatever là closing đó<head>sớm đầu tiên.
Kiểm thử 2 — Đó HTTP header là đã gửi (PDFs / non-HTML)
- Kiểm thử to chạy —
curl -sI https://example.com/file.pdf | grep -i '^link:'. - Dự kiến kết quả — MỘT
link: <url>; rel="canonical"line trong đó phản hồi các header. - Failure interpretation — Không
link:header có nghĩa là đó máy chủ/CDN configuration không sending điều này — kiểm tra đó.htaccess, Nginx config, hoặc edge rule đó là supposed to thêm điều này. - Monitoring window — Immediate.
- Rollback trigger — N/MỘT — này là một config kiểm tra, không điều gì đó to roll back.
Kiểm thử 3 — Google được chọn canonical matches của bạn declared một
- Kiểm thử to chạy — Chạy URL Inspection trong Google Search Console on đó canonicalized (duplicate) URL.
- Dự kiến kết quả — Người dùng-declared canonical và Google-được chọn canonical match đó URL bạn dự kiến.
- Failure interpretation — MỘT mismatch (e.g. “Duplicate, Google chose a different canonical than user” (bản dịch) «Duplicate, Google chose một khác nhau canonical hơn người dùng») thường có nghĩa là đó nội dung không genuinely tương đương giữa đó hai URLs, hoặc một stronger tín hiệu — liên kết nội bộ, sitemap, các chuyển hướng — là pointing Google nơi nào đó khác. Remember này là một hint, không một rule; Google có thể giữ disagreeing even sau đó tag itself là correct. Cũng remember đó được lập chỉ mục canonical các trường có thể lag reality by hours, và đó trực tiếp kiểm thử không thể predict canonical selection tại all — điều này chỉ xác nhận đó trang là hiện tại fetchable.
- Monitoring window — Days up to Google own stated bound: của nó khắc phục sự cố hướng dẫn says điều này “might hold pages in a duplicate cluster for up to two weeks” (bản dịch) «có thể hold các trang trong một duplicate cluster cho up to hai weeks» sau khi bạn cách sửa đó underlying nội dung vấn đề. đó là cụ thể về re-evaluating một nội dung-fixed duplicate cluster — không một universal canonical-tag timeline, một báo cáo-clearance promise, hoặc một xếp hạng bảo đảm.
- Rollback trigger — không giữ tightening đó canonical tag itself nếu đó mismatch persists past vài weeks — re-kiểm tra xem đó hai URLs là thực ra duplicates đầu tiên; đó là đó hơn phổ biến root nguyên nhân hơn đó tag wording.
Tự kiểm tra: Đó Canonical Tag
Five nhanh các câu hỏi on cách rel=canonical hoạt động. Pick an câu trả lời cho mỗi, thì kiểm tra.
Nhật ký thay đổi
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 2 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 18 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 17 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.