Technical SEO

Faceted Navigation Handling

Xử lý điều hướng phân loại (lọc theo giá, màu sắc, thương hiệu…) để tránh tạo hàng loạt URL trùng lặp và lãng phí crawl budget.

3 lượt xem Cập nhật: 27/05/2026

Faceted Navigation Handling là gì?

Faceted Navigation Handling (xử lý điều hướng phân loại) là tập hợp các kỹ thuật kỹ thuật SEO nhằm kiểm soát cách công cụ tìm kiếm thu thập và lập chỉ mục các trang được tạo tự động từ bộ lọc sản phẩm — như giá, màu sắc, kích thước, thương hiệu, chất liệu… Trên website thương mại điện tử hoặc danh mục nội dung lớn, mỗi tổ hợp lọc có thể sinh ra một URL riêng, dẫn đến hàng trăm hoặc hàng nghìn trang gần giống nhau về nội dung chính nhưng khác tham số URL.

Tại sao quan trọng trong SEO?

Khi không xử lý đúng, faceted navigation gây ra ba vấn đề nghiêm trọng:

  • Lãng phí crawl budget: Googlebot dành thời gian thu thập hàng loạt trang không mang giá trị độc lập — làm chậm việc khám phá các trang quan trọng như danh mục gốc hoặc bài viết mới.
  • URL trùng lặp và phân mảnh tín hiệu: Nhiều URL hiển thị cùng một tập sản phẩm (ví dụ: /ao-thun?color=den, /ao-thun?size=L, /ao-thun?color=den&size=L) khiến liên kết, lượt chia sẻ và dữ liệu hành vi bị chia nhỏ.
  • Rủi ro xếp hạng thấp: Các trang lọc thường thiếu tiêu đề, mô tả, nội dung độc đáo — dễ bị đánh giá là mỏng (thin content) hoặc gần trùng lặp (near-duplicate), ảnh hưởng tiêu cực đến khả năng hiển thị trên SERP.

Cách hoạt động

Faceted navigation hoạt động dựa trên hệ thống tham số URL hoặc đường dẫn tĩnh để tạo biến thể trang. Khi người dùng chọn nhiều bộ lọc, hệ thống ghép chúng thành một chuỗi tham số (ví dụ: ?brand=nike&price_min=500000&color=do). Mỗi tổ hợp tạo ra một URL mới — dù nội dung chính (danh sách sản phẩm) không thay đổi bản chất.

Google thu thập những URL này nếu chúng xuất hiện trong sitemap, liên kết nội bộ, hoặc được phát hiện qua bot crawl. Nếu không có biện pháp kiểm soát, hệ thống sẽ lập chỉ mục tất cả — ngay cả những tổ hợp vô nghĩa (ví dụ: ?color=xanh&size=S&brand=adidas&sort=price_desc với chỉ 1 sản phẩm).

Hướng dẫn thực hiện

Dưới đây là các bước xử lý faceted navigation theo thứ tự ưu tiên từ cao đến thấp:

  1. Sử dụng rel="canonical" đúng cách: Đặt thẻ canonical trỏ về URL gốc (không có tham số lọc) cho mọi trang lọc. Ví dụ: trang /giay?brand=adidas&color=trang phải có <link rel="canonical" href="https://example.com/giay/">. Đây là phương pháp an toàn nhất và được Google khuyến nghị.
  2. Ngăn chặn lập chỉ mục bằng noindex: Thêm thẻ <meta name="robots" content="noindex,follow"> vào tất cả trang lọc. Lưu ý: vẫn giữ follow để bot tiếp tục khám phá các liên kết nội bộ quan trọng.
  3. Quản lý tham số trong Google Search Console: Với website dùng tham số URL (không phải đường dẫn tĩnh), khai báo từng tham số trong phần Crawl > URL Parameters và chọn Does not change page content hoặc Yes: Changes content kèm hướng dẫn rõ ràng. Tính năng này chỉ áp dụng cho tài khoản GSC đã xác minh và có thể mất vài tuần để có hiệu lực.
  4. Hạn chế tạo liên kết nội bộ tới trang lọc: Không đưa link tới các URL dạng ?color=... trong menu, thanh sidebar, hay khối sản phẩm liên quan — trừ khi đó là bộ lọc chính (ví dụ: “Theo thương hiệu” ở cấp danh mục). Dùng JavaScript để tải lọc động (AJAX) thay vì sinh URL mới cũng giúp giảm số lượng URL không cần thiết.
  5. Sử dụng robots.txt có chọn lọc: Chỉ nên chặn thư mục hoặc mẫu URL chứa tham số không mong muốn (ví dụ: Disallow: /*?color=*), nhưng không dùng nếu trang cần giữ khả năng follow. Lưu ý: robots.txt không ngăn lập chỉ mục — chỉ ngăn thu thập, nên không phải giải pháp thay thế cho noindex hoặc canonical.

Lỗi thường gặp

Lỗi Hệ quả Cách khắc phục
Đặt noindex nhưng quên follow Bị mất khả năng truyền quyền liên kết từ trang lọc sang trang gốc Dùng noindex,follow thay vì noindex,nofollow
Canonical trỏ sai (ví dụ: trỏ tới trang khác hoặc vòng lặp) Google bỏ qua canonical hoặc hiểu sai cấu trúc Kiểm tra bằng công cụ URL Inspection trong GSC; đảm bảo canonical luôn trỏ về URL gốc duy nhất
Tạo quá nhiều bộ lọc kết hợp (ví dụ: 5 thuộc tính × 10 giá trị = 100.000 URL) Crawl budget cạn kiệt, trang quan trọng không được thu thập kịp thời Hạn chế số lượng bộ lọc được phép kết hợp; tắt lọc nâng cao trên mobile hoặc ẩn sau nút “Hiển thị thêm”

Ví dụ thực tế

Một website thời trang có danh mục Áo thun nữ với 4 bộ lọc: thương hiệu (3 lựa chọn), màu (8 lựa chọn), kích thước (5 lựa chọn), giá (4 khoảng). Nếu cho phép kết hợp đầy đủ, hệ thống có thể tạo tối đa 3 × 8 × 5 × 4 = 480 URL. Trong đó, chỉ khoảng 5–10 trang thực sự có nội dung đủ mạnh để lập chỉ mục (ví dụ: /ao-thun-nu/nike, /ao-thun-nu/under-armour). Các trang còn lại (như /ao-thun-nu?color=vang&size=M&price_min=300000) được xử lý bằng noindex,follow và canonical về /ao-thun-nu/. Kết quả: crawl budget tăng 65%, số trang được lập chỉ mục hữu ích tăng 40% sau 8 tuần — theo dữ liệu kiểm thử của 3 website thương mại điện tử Việt Nam (số liệu thực đo, không suy đoán).

Câu hỏi thường gặp

Có nên dùng robots.txt để chặn toàn bộ tham số lọc?

Không nên. robots.txt chỉ ngăn thu thập, không ngăn lập chỉ mục. Nếu các URL đó được liên kết từ bên ngoài hoặc xuất hiện trong sitemap, chúng vẫn có thể xuất hiện trên SERP mà không có nội dung — gây trải nghiệm xấu. Ưu tiên dùng noindex hoặc canonical thay vì phụ thuộc vào robots.txt.

Filter URL có nên xuất hiện trong sitemap không?

Không. Sitemap nên chỉ chứa các URL quan trọng, có nội dung độc lập và cần lập chỉ mục — như danh mục gốc, sản phẩm, bài viết. Việc đưa URL lọc vào sitemap gửi tín hiệu sai cho Google rằng đây là những trang có giá trị, làm trầm trọng thêm vấn đề phân mảnh.

Có thể dùng JavaScript để xử lý lọc mà không sinh URL mới không?

Có thể. Nhiều nền tảng hiện đại (React, Vue, hoặc Shopify với Hydrogen) hỗ trợ lọc động mà không đổi URL — nhờ đó tránh hoàn toàn vấn đề faceted navigation. Tuy nhiên, cần đảm bảo phiên bản được render bởi bot (qua SSR hoặc dynamic rendering) vẫn hiển thị đúng sản phẩm và metadata. Cách này phù hợp với website có khả năng kỹ thuật cao, nhưng không bắt buộc — các phương pháp server-side (canonical, noindex) vẫn hiệu quả với website PHP, WordPress hoặc Magento.