Thẻ canonical là gì?
Thẻ canonical là phần tử HTML dùng để đề xuất URL đại diện cho một nhóm trang trùng hoặc rất giống nhau. Nó thường nằm trong <head> dưới dạng <link rel="canonical" href="URL-chinh">. Google có thể hợp nhất tín hiệu của các URL phụ và hiển thị URL đại diện trên kết quả tìm kiếm.
Hãy hình dung một trang sản phẩm có URL gốc, URL gắn bộ lọc và URL kèm tham số theo dõi. Người đọc vẫn thấy gần như cùng một nội dung, nhưng crawler lại gặp ba địa chỉ. Canonical nói rằng: “Trong nhóm này, đây là URL tôi muốn dùng làm bản chính”.
Có một chi tiết dễ bị hiểu sai. Canonical là tín hiệu, không phải mệnh lệnh. Google Search Central xếp rel="canonical" vào nhóm tín hiệu mạnh, nhưng Google vẫn có thể chọn URL khác nếu nội dung và các tín hiệu kỹ thuật mâu thuẫn.
Khi nào nên dùng canonical?
Canonical phù hợp khi nhiều URL cần tiếp tục tồn tại cho người dùng, nhưng bạn chỉ muốn một URL đại diện trong Search. Các tình huống thường gặp gồm:
- URL có tham số theo dõi như
?utm_source=email. - Trang danh mục sinh biến thể do lọc hoặc sắp xếp.
- Một sản phẩm xuất hiện qua nhiều đường dẫn danh mục nhưng nội dung không đổi.
- Phiên bản in, PDF hoặc định dạng khác lặp lại nội dung chính.
- Website có biến thể protocol, host hoặc dấu gạch cuối chưa được chuẩn hóa hoàn toàn.
Trang chính nên có self-canonical, tức canonical trỏ về chính URL đó. Việc này làm lựa chọn của website rõ ràng hơn và giảm rủi ro tham số lạ bị coi là URL đại diện.
Ví dụ thật trên Mạnh Digital: khi kiểm tra ngày 11/09/2026, cả /blog/geo-la-gi và phiên bản có ?utm_source=demo đều khai báo canonical về https://manhdigital.com/blog/geo-la-gi. Tham số vẫn dùng được cho đo lường, còn URL gốc giữ vai trò đại diện.
Ngược lại, đừng canonical hai trang chỉ vì chúng cùng nói về một chủ đề. Bài “Technical SEO là gì” và bài “Canonical là gì” có liên quan nhưng giải quyết hai nhu cầu khác nhau, nên mỗi bài phải self-canonical. Nếu gom chúng về một URL, phần nội dung riêng của trang phụ có thể không được xử lý như một trang độc lập.
Canonical, redirect và noindex khác nhau ở đâu?
Ba cơ chế này thường bị dùng thay nhau, trong khi mỗi cơ chế giải quyết một việc khác.
| Cơ chế | Người dùng vào URL cũ | Mục đích phù hợp |
|---|---|---|
| Canonical | Vẫn xem được trang | Giữ nhiều URL gần giống, đề xuất một URL đại diện |
| 301 redirect | Được chuyển sang URL mới | URL cũ đã ngừng dùng hoặc nội dung được chuyển vĩnh viễn |
| Noindex | Vẫn xem được trang | Không muốn trang xuất hiện trong Search |
Nếu đổi slug và không còn lý do giữ URL cũ, dùng redirect 301 tới URL mới. Nếu trang vẫn cần cho khách hàng nhưng không nên xuất hiện trên Google, xem cách chọn giữa noindex và Disallow. Canonical chỉ hợp lý khi URL nguồn và URL đích thực sự trùng hoặc đủ gần nhau.
Robots.txt cũng không phải công cụ canonicalization. Chặn crawl khiến Google khó đọc thẻ canonical trên trang, nhưng URL vẫn có thể được biết đến qua link. Dùng nhiều lớp sai mục đích thường tạo tín hiệu đối nghịch thay vì “chặn chắc hơn”.
Cách cài thẻ canonical đúng
Với trang HTML, đặt một canonical trong phần <head> và dùng URL tuyệt đối:
<link rel="canonical" href="https://example.com/bai-viet">
Trang gốc cũng nên có đúng dòng này trỏ về chính nó. Trên WordPress, plugin SEO thường tự tạo canonical. Không nên để theme, plugin và code tùy chỉnh cùng thêm thẻ vì kết quả có thể là hai URL canonical khác nhau.
Với PDF hoặc tài liệu không có HTML <head>, máy chủ có thể trả canonical qua HTTP header:
Link: <https://example.com/huong-dan> rel="canonical"
RFC 6596 khuyến nghị mỗi tài nguyên chỉ chỉ định một canonical và không trỏ tới URL lỗi, URL redirect hoặc một URL tiếp tục canonical sang nơi khác. Nói ngắn gọn, đích canonical phải là trang ổn định, trả 200 và có nội dung đại diện đầy đủ.
Các tín hiệu liên quan cũng phải cùng hướng. Internal link nên trỏ thẳng URL canonical, còn XML sitemap chỉ nên chứa URL canonical. Nếu canonical chọn HTTPS nhưng sitemap và link nội bộ vẫn dùng HTTP, website đang tự đưa ra hai câu trả lời.
Cách kiểm tra khi Google chọn canonical khác
Đầu tiên, mở source HTML và tìm rel="canonical". Kiểm tra đúng URL, chỉ có một thẻ, dùng URL tuyệt đối và thẻ nằm trong <head>. Với website render bằng JavaScript, canonical nên có sẵn trong initial HTML và không bị script đổi sau khi tải trang.
Tiếp theo, kiểm tra URL đích:
- Trả HTTP 200, không redirect và không bị noindex.
- Nội dung đủ tương đương để đại diện cho URL nguồn.
- Có self-canonical đúng.
- Được dùng nhất quán trong internal link và sitemap.
Sau đó dùng URL Inspection trong Google Search Console để so sánh “canonical do người dùng khai báo” với “canonical do Google chọn”. Nếu hai giá trị khác nhau, đừng chỉ sửa mỗi thẻ HTML. Hãy tìm canonical chéo, redirect, trang mỏng, URL tham số được link quá nhiều hoặc hai trang gần như sao chép nhau.
Google cho biết quá trình đánh giá lại một cụm trang trùng lặp có thể mất tới khoảng hai tuần sau khi nội dung được tách biệt rõ. Request Indexing chỉ nên thực hiện sau khi tín hiệu đã được sửa và dành cho URL quan trọng.
Nếu canonical sai xuất hiện trên nhiều template, sửa ở cấp hệ thống sẽ an toàn hơn chỉnh từng trang. Một lần SEO Audit nên crawl toàn bộ website, so canonical với status code, robots, sitemap và internal link để tìm đúng pattern gây lỗi.
Quy tắc dễ nhớ là thế này: còn giữ nhiều bản gần giống thì dùng canonical, bỏ hẳn URL cũ thì redirect, không muốn trang lên Search thì noindex. Chọn đúng công cụ trước, sau đó làm cho mọi tín hiệu kỹ thuật cùng chỉ về một URL.