Cách Xử Lý Duplicate Content Và Canonical Tag

Mục lục bài viết5 mục

Mở báo cáo lập chỉ mục trong Search Console thấy hàng trăm URL nằm trong nhóm "trùng lặp, Google chưa chọn URL đại diện" là tình huống khiến nhiều người quản trị kỹ thuật lúng túng, vì canonical, redirect, và noindex nhìn qua đều có vẻ "giải quyết trùng lặp" nhưng dùng sai chỗ có thể khiến tình trạng nặng hơn. Ba công cụ này giải quyết ba vấn đề khác nhau, và bài này đi thẳng vào từng tình huống trùng lặp cụ thể để chọn đúng công cụ cho đúng chỗ.

Canonical tag là gì và vì sao nó chỉ là gợi ý, không phải chỉ thị bắt buộc

Canonical tag (rel="canonical") là thẻ khai báo trong mã nguồn, chỉ ra URL nào bạn muốn Google coi là bản chính thức khi có nhiều URL cùng hiển thị nội dung giống hoặc gần giống nhau. Mục đích chính không phải "ẩn" các URL còn lại, mà là gộp các tín hiệu xếp hạng (backlink trỏ đến, lượt tương tác) đang bị phân tán trên nhiều URL về đúng một URL đại diện duy nhất.

Điểm quan trọng cần hiểu đúng: canonical là một gợi ý, không phải chỉ thị bắt buộc Google phải tuân theo tuyệt đối. Google xem xét canonical cùng với nhiều tín hiệu khác (cấu trúc internal link, sitemap, redirect trên toàn site) để tự quyết định URL nào thật sự nên đại diện. Nếu các tín hiệu này mâu thuẫn nhau, ví dụ canonical trỏ về URL A nhưng phần lớn internal link trên website vẫn trỏ đến URL B, Google có thể chọn URL B làm đại diện dù canonical nói khác, vì hệ thống ưu tiên tín hiệu đồng nhất mạnh hơn một khai báo đơn lẻ. Đây là lý do canonical chỉ thật sự phát huy tác dụng khi đi kèm nhất quán với toàn bộ cấu trúc internal link và sitemap của website, không phải chỉ thêm mỗi thẻ này rồi coi như xong.

Xử lý trùng lặp do tham số URL

Tham số URL (bộ lọc màu sắc, kích thước, cách sắp xếp giá, mã theo dõi chiến dịch quảng cáo) là nguồn trùng lặp phổ biến nhất trên website thương mại điện tử, vì mỗi tổ hợp tham số tạo ra một URL riêng nhưng nội dung hiển thị gần như giống hệt trang gốc. Ví dụ /san-pham/phin-ca-phe?mau=den và /san-pham/phin-ca-phe?mau=bac&sap-xep=gia đều là biến thể của cùng một trang sản phẩm.

Cách xử lý đúng: đặt canonical trên mọi biến thể tham số trỏ về đúng URL gốc không tham số (/san-pham/phin-ca-phe), áp dụng thống nhất cho toàn bộ nhóm tham số cùng loại. Với các tham số chỉ phục vụ mục đích theo dõi (mã chiến dịch quảng cáo, mã giới thiệu) không mang thông tin lọc/sắp xếp nào, nên tránh để Googlebot thu thập các URL này ngay từ đầu bằng cách chặn trong robots.txt, vì đây thuần túy là lãng phí ngân sách thu thập dữ liệu, không có giá trị hiển thị nội dung nào khác trang gốc.

Trường hợp ngoại lệ đáng lưu ý: nếu một tổ hợp tham số tạo ra trang thật sự có nhu cầu tìm kiếm riêng (ví dụ trang lọc "phin cà phê màu đen" có lượng tìm kiếm riêng đáng kể), cân nhắc biến trang đó thành một URL tĩnh riêng có nội dung được viết đầy đủ, không còn coi là biến thể trùng lặp cần canonical nữa, mà là một trang độc lập xứng đáng được index riêng.

Xử lý trùng lặp do phân trang danh mục hoặc danh sách bài viết

Phân trang (trang 1, trang 2, trang 3 của một danh mục sản phẩm hoặc danh sách bài viết) từng được khuyến nghị xử lý bằng thẻ rel="next" và rel="prev", nhưng Google đã chính thức ngừng sử dụng hai thẻ này từ năm 2019 để hiểu chuỗi phân trang. Nhiều hướng dẫn cũ trên mạng vẫn còn nhắc đến hai thẻ này như một giải pháp hiện hành, đây là thông tin đã lỗi thời, không còn tác dụng.

Cách làm đúng hiện tại là để Google tự hiểu chuỗi phân trang thông qua cấu trúc internal link thông thường: mỗi trang phân trang có đường link HTML dẫn sang trang kế tiếp/trước đó (nút "Trang sau", "Trang trước", hoặc số trang cụ thể), không cần thẻ đặc biệt nào khác. Về canonical cho từng trang phân trang, mỗi trang nên tự trỏ canonical về chính nó (không phải tất cả trỏ về trang 1), vì nội dung trang 2, trang 3 thật sự khác trang 1 (sản phẩm/bài viết khác nhau), không phải bản sao của trang 1.

Xử lý trùng lặp do HTTP/HTTPS, www/non-www và nội dung đăng lại

Một website vô tình có thể truy cập được qua nhiều phiên bản URL khác nhau cùng lúc: http:// và https://, có và không có www, tạo ra tối đa bốn phiên bản trùng lặp hoàn toàn cho cùng một trang nếu không xử lý. Đây là dạng trùng lặp nghiêm trọng nhất vì ảnh hưởng toàn bộ website, không riêng vài trang.

Cách xử lý đúng không phải canonical mà là redirect 301 vĩnh viễn, chuyển ba phiên bản không mong muốn về đúng một phiên bản chính thức duy nhất đã chọn (thường là https:// kèm hoặc không kèm www tùy quyết định ban đầu khi xây site). Khác với tham số URL hay phân trang (nội dung thật sự cần tồn tại song song), các phiên bản domain trùng lặp này không có lý do gì để tồn tại độc lập, nên redirect dứt điểm luôn tốt hơn chỉ đặt canonical, vì redirect loại bỏ hoàn toàn khả năng người dùng hoặc công cụ khác vô tình truy cập nhầm phiên bản không chính thức.

Với nội dung đăng lại trên nhiều domain khác nhau (syndicate content, ví dụ một bài viết được phép đăng lại trên đối tác), canonical là công cụ phù hợp nhưng cần thực hiện từ phía trang đăng lại: trang đối tác đặt canonical trỏ ngược về đúng URL gốc trên website của bạn, không phải bạn tự đặt canonical trỏ ra ngoài, vì bạn không kiểm soát được mã nguồn trang đối tác.

Sai lầm thường gặp khi triển khai canonical

Sai lầm phổ biến nhất là để canonical tự trỏ về chính nó cho mọi trang một cách máy móc (thường do cấu hình mặc định của CMS) mà không rà lại các trường hợp thật sự cần canonical trỏ chéo sang URL khác, dẫn đến hàng loạt biến thể tham số URL vẫn được index riêng lẻ dù đáng lẽ nên gộp tín hiệu về một trang.

Sai lầm thứ hai là đặt canonical trỏ về một trang nhưng nội dung hai trang lại khác nhau đáng kể, không phải biến thể thật sự của nhau. Google khi phát hiện nội dung khác biệt rõ ràng thường bỏ qua canonical đã khai báo, tự chọn URL khác làm đại diện theo đánh giá riêng, khiến canonical bạn đặt trở nên vô nghĩa.

Sai lầm thứ ba là kết hợp sai giữa canonical và noindex trên cùng một trang: đặt canonical trỏ sang trang khác nhưng đồng thời gắn noindex trên chính trang đó, hai chỉ thị này xung đột ý nghĩa (canonical ngụ ý "trang này là bản sao, hãy gộp tín hiệu về trang kia" còn noindex ngụ ý "đừng index trang này luôn"), khiến Google khó xác định chính xác ý định thật sự, thường dẫn đến bỏ qua canonical hoàn toàn.

=== FAQ === Q: Trùng lặp nội dung có bị Google phạt trực tiếp không? A: Không có hình phạt trực tiếp cho trùng lặp thông thường, nhưng nó làm phân tán tín hiệu xếp hạng giữa các URL, gián tiếp khiến không URL nào xếp hạng tốt như khi tín hiệu được gộp về một URL duy nhất.

Q: Có nên dùng noindex thay vì canonical cho trang tham số URL không? A: Canonical phù hợp hơn vì vẫn cho phép Google thu thập và gộp tín hiệu, còn noindex khiến Google dần ngừng ghé thăm lại trang đó, không gộp được tín hiệu nào cả.

Q: Bao lâu thì Google cập nhật lại theo canonical mới đặt? A: Không có thời gian cố định, phụ thuộc tần suất Googlebot thu thập lại các URL liên quan, có thể từ vài ngày đến vài tuần với website có crawl demand thấp.

Xác định đúng loại trùng lặp website đang gặp trước khi chọn công cụ xử lý, vì canonical, redirect, và noindex giải quyết ba tình huống khác nhau, dùng sai công cụ không những không hết trùng lặp mà còn có thể làm mất index những trang cần giữ.