URL tham số bộ lọc sản phẩm nên biểu diễn mỗi trạng thái lọc bằng một địa chỉ duy nhất. Muốn làm được điều đó, website cần thống nhất tên tham số, thứ tự tham số, cách sắp xếp nhiều giá trị, quy tắc bỏ giá trị mặc định và phương án xử lý URL không chuẩn.
Đây không chỉ là vấn đề trình bày URL. Nếu cùng một danh sách sản phẩm có thể được truy cập qua nhiều địa chỉ, công cụ tìm kiếm có thể phải thu thập các trang gần như giống nhau, trong khi tín hiệu liên kết và khả năng kiểm soát index bị phân tán. Việc hiểu đúng cách xử lý faceted URL cho SEO là nền tảng trước khi quyết định URL nào được tạo, thu thập dữ liệu hoặc xuất hiện trong kết quả tìm kiếm.
Vì sao URL bộ lọc dễ gây trùng lặp?
Bộ lọc sản phẩm thường cho phép người dùng kết hợp thương hiệu, màu sắc, kích thước, khoảng giá, tình trạng còn hàng và nhiều thuộc tính khác. Số trạng thái có thể tăng nhanh khi các điều kiện được kết hợp tự do.
Tình trạng trùng lặp thường xuất hiện khi:
- Thứ tự tham số thay đổi nhưng kết quả sản phẩm không đổi.
- Thứ tự các giá trị trong cùng một tham số không được chuẩn hóa.
- Cùng một thuộc tính được biểu diễn bằng nhiều tên hoặc nhiều kiểu mã hóa.
- URL vẫn giữ tham số rỗng, giá trị mặc định hoặc tham số không ảnh hưởng đến nội dung.
- Hệ thống chấp nhận đồng thời cả đường dẫn tĩnh và query string cho cùng trạng thái lọc.
- Tham số theo dõi, sắp xếp hoặc giao diện bị đưa vào URL có thể index.
- Phiên bản viết hoa, viết thường, có dấu gạch chéo cuối hoặc cách mã hóa ký tự khác nhau cùng tồn tại.
Ví dụ, các URL giả lập sau có thể cùng trả về một danh sách:
/dien-thoai?mau=den&bo-nho=256gb
/dien-thoai?bo-nho=256gb&mau=den
/dien-thoai?mau=den&bo-nho=256GB
/dien-thoai?mau=den&bo-nho=256gb&con-hang=true
Nếu con-hang=true là trạng thái mặc định và hệ thống không phân biệt chữ hoa, chữ thường trong giá trị bộ nhớ, bốn địa chỉ trên có thể đại diện cho cùng một nội dung.
Nguyên tắc thiết kế cấu trúc URL bộ lọc

Một trạng thái lọc có một URL chuẩn
Trước khi xây dựng quy tắc URL, cần định nghĩa “trạng thái lọc” dựa trên dữ liệu thực sự làm thay đổi tập sản phẩm. Hai URL trả về cùng tập sản phẩm, cùng tiêu đề, cùng nội dung chính và cùng mục đích tìm kiếm nên được quy về một URL chuẩn.
Nguyên tắc này cần áp dụng ở cả ba lớp:
- Giao diện chỉ tạo liên kết đến URL chuẩn.
- Máy chủ chuẩn hóa các biến thể trước khi trả nội dung.
- Các tín hiệu SEO như canonical, sitemap và liên kết nội bộ cùng trỏ về địa chỉ chuẩn.
Đặt tên tham số ngắn, rõ nghĩa và ổn định
Tên tham số nên phản ánh thuộc tính mà nó kiểm soát. Có thể dùng cấu trúc giả lập như:
?thuong-hieu=alpha
?mau=den
?kieu-dang=the-thao
Không nên để cùng một thuộc tính tồn tại dưới nhiều tên như mau, color, filter_color nếu chúng đều có cùng chức năng. Khi đã công bố URL và để hệ thống tạo liên kết nội bộ, việc đổi tên tham số cần có kế hoạch chuyển hướng tương ứng.
Tên và giá trị nên dùng một quy ước thống nhất về chữ thường, dấu gạch nối, ký tự tiếng Việt và mã hóa khoảng trắng. Quy ước nào được chọn không quan trọng bằng việc được áp dụng nhất quán trên toàn website.
Chỉ giữ tham số làm thay đổi nội dung cần chia sẻ
URL bộ lọc không nên chứa trạng thái giao diện tạm thời như bảng bộ lọc đang mở hay đóng. Các tham số phiên truy cập, mã theo dõi và lựa chọn không ảnh hưởng đến danh sách sản phẩm cũng không nên trở thành một phần của faceted URL chuẩn.
Nếu lựa chọn sắp xếp chỉ thay đổi thứ tự hiển thị mà không thay đổi tập sản phẩm, cần xử lý nó riêng với bộ lọc. Không nên mặc định coi mọi URL sắp xếp là một trang đích tìm kiếm độc lập.
Bỏ giá trị mặc định và tham số rỗng
Nếu danh mục mặc định hiển thị tất cả màu, URL ?mau=tat-ca thường không cần tồn tại song song với URL danh mục gốc. Tương tự, những dạng sau nên được quy về địa chỉ gọn hơn nếu chúng không tạo nội dung khác biệt:
/giay?mau=
/giay?mau=tat-ca
/giay?trang=1
Trang đầu tiên thường nên dùng URL danh mục hoặc URL bộ lọc không có tham số trang, thay vì duy trì thêm biến thể trang=1.
Cách kiểm soát thứ tự tham số và giá trị
Chọn một thứ tự tham số cố định
Hệ thống nên có danh sách ưu tiên cho các nhóm thuộc tính. Ví dụ giả lập:
thuong-hieu → dong-san-pham → mau → kich-thuoc → muc-gia
Dù người dùng chọn màu trước hay thương hiệu trước, URL cuối cùng vẫn được xuất theo thứ tự đã định:
/ao?thuong-hieu=alpha&mau=den&kich-thuoc=m
Không nên để lịch sử thao tác quyết định thứ tự tham số. Nếu không, hai người dùng chọn cùng điều kiện theo trình tự khác nhau có thể tạo ra hai URL cho cùng trạng thái.
Chuẩn hóa nhiều giá trị của một thuộc tính
Khi người dùng chọn nhiều màu, cần quyết định rõ cách biểu diễn. Hai phương án thường gặp là dùng một tham số chứa danh sách giá trị hoặc lặp lại tham số:
/ao?mau=den,trang
/ao?mau=den&mau=trang
Chỉ nên chọn một phương án làm chuẩn. Đồng thời, các giá trị cần được sắp xếp theo quy tắc cố định, không phụ thuộc thứ tự nhấp:
/ao?mau=den,trang
không tạo thêm:
/ao?mau=trang,den
Thứ tự có thể dựa trên mã nội bộ ổn định hoặc danh sách ưu tiên đã định trước. Không nên dựa vào nhãn hiển thị nếu nhãn có thể thay đổi theo ngôn ngữ hoặc hoạt động biên tập.
Chuẩn hóa kiểu dữ liệu
Mỗi tham số cần có quy tắc xác thực riêng:
- Giá trị lựa chọn chỉ nhận mã đã tồn tại trong hệ thống.
- Số được chuyển về cùng một định dạng, không giữ số 0 vô nghĩa ở đầu.
- Khoảng giá có quy ước rõ cho cận dưới và cận trên.
- Giá trị không hợp lệ không được âm thầm tạo một trang có thể index.
- Giá trị trùng trong cùng tham số được loại bỏ.
- Chữ hoa và chữ thường được quy về một dạng chuẩn nếu không mang ý nghĩa khác nhau.
Xử lý nhiều URL cho cùng một trạng thái lọc
Chuẩn hóa ngay khi tạo URL là giải pháp quan trọng nhất. Canonical chỉ là tín hiệu hợp nhất, không thay thế việc kiểm soát liên kết và phản hồi máy chủ.
Chuyển hướng biến thể về URL chuẩn
Khi máy chủ nhận một URL hợp lệ nhưng không đúng quy ước, có thể chuyển hướng đến URL chuẩn. Ví dụ:
/ao?mau=trang,den&thuong-hieu=alpha
được chuyển về:
/ao?thuong-hieu=alpha&mau=den,trang
Chuyển hướng phù hợp khi hai địa chỉ chắc chắn đại diện cho cùng nội dung và người dùng không mất trạng thái cần thiết. Nếu URL chứa tham số không hợp lệ, hệ thống cần lựa chọn phản hồi dựa trên bản chất yêu cầu thay vì tự động đưa mọi trường hợp về danh mục gốc.
Dùng canonical nhất quán
Mỗi trang bộ lọc hợp lệ nên khai báo canonical phù hợp với chiến lược index:
- Trang được chọn làm trang đích có thể dùng canonical tự tham chiếu.
- Biến thể trùng lặp có thể trỏ canonical đến URL chuẩn tương ứng.
- Trang không được ưu tiên index nhưng có nội dung thực sự khác không nên bị canonical tùy tiện về danh mục cha.
Canonical phải khớp với URL trong sitemap và liên kết nội bộ. Nếu giao diện vẫn liên tục tạo URL không chuẩn, công cụ tìm kiếm vẫn có thể phát hiện và thu thập các biến thể đó.
Không dùng robots.txt như công cụ hợp nhất URL
Chặn đường dẫn hoặc tham số trong robots.txt có thể ngăn quá trình thu thập nội dung, nhưng không tự động hợp nhất các URL trùng lặp. Việc chặn còn có thể khiến công cụ tìm kiếm không đọc được canonical hoặc chỉ thị nằm trên trang.
Trước khi hạn chế thu thập dữ liệu, cần đánh giá cách tối ưu ngân sách crawl dựa trên quy mô danh mục, số tổ hợp thực tế và dữ liệu nhật ký máy chủ. Không nên áp dụng một quy tắc chặn tham số chung cho mọi website.
Phân loại URL cần index và không cần index

Không phải mọi tổ hợp bộ lọc đều cần trở thành trang đích SEO. Quyết định index nên dựa trên nhu cầu tìm kiếm, độ hữu ích của kết quả, khả năng duy trì nội dung và mức độ khác biệt so với danh mục gốc.
Có thể chia các trạng thái thành ba nhóm:
| Nhóm URL | Hướng xử lý tham khảo |
|---|---|
| Có nhu cầu tìm kiếm rõ, đủ sản phẩm và nội dung hữu ích | Cho phép truy cập, canonical tự tham chiếu, đưa vào liên kết nội bộ phù hợp |
| Hữu ích cho người dùng nhưng không phù hợp làm trang đích tìm kiếm | Vẫn cho hoạt động, cân nhắc noindex và hạn chế liên kết có thể thu thập |
| Trùng lặp, vô nghĩa hoặc chứa giá trị không hợp lệ | Chuẩn hóa, chuyển hướng hoặc trả mã trạng thái phù hợp |
Việc lựa chọn trang bộ lọc nên được index cần thực hiện riêng với việc thiết kế cú pháp URL. Một cấu trúc URL sạch không đồng nghĩa mọi tổ hợp đều đáng index.
Các trang được chọn làm trang đích cần có khả năng duy trì ổn định. Một tổ hợp thường xuyên không có sản phẩm, chỉ khác danh mục cha ở vài mục hoặc không đáp ứng ý định riêng thường không tạo đủ giá trị để index độc lập.
Ví dụ cấu trúc URL bộ lọc giả lập
Giả sử danh mục /may-tinh-xach-tay có các thuộc tính thương hiệu, nhu cầu, màu và mức giá. Quy tắc được chọn như sau:
- Thứ tự tham số:
thuong-hieu,nhu-cau,mau,gia-tu,gia-den. - Tất cả tên và giá trị dùng chữ thường.
- Nhiều giá trị được nối bằng dấu phẩy và sắp xếp theo mã cố định.
- Không giữ tham số rỗng hoặc giá trị mặc định.
- Chỉ tham số đã đăng ký mới được chấp nhận.
URL chuẩn giả lập:
/may-tinh-xach-tay?thuong-hieu=alpha&nhu-cau=van-phong&mau=bac,den&gia-tu=100&gia-den=200
Một số biến thể cần được chuẩn hóa:
| URL đầu vào | Cách xử lý |
|---|---|
?mau=den,bac&thuong-hieu=alpha |
Sắp xếp lại tham số và giá trị |
?thuong-hieu=ALPHA |
Chuyển giá trị về chữ thường nếu không phân biệt hoa thường |
?thuong-hieu=alpha&mau= |
Loại tham số rỗng |
?thuong-hieu=alpha&trang=1 |
Loại tham số trang đầu |
?thuong-hieu=alpha&che-do=luoi |
Bỏ trạng thái giao diện khỏi URL chuẩn |
?thuong-hieu=khong-ton-tai |
Trả phản hồi phù hợp cho giá trị không hợp lệ |
Đây chỉ là cấu trúc minh họa, không phải công thức bắt buộc. Một số nền tảng phù hợp với query string, trong khi nền tảng khác có thể ánh xạ các trang đích quan trọng thành đường dẫn tĩnh. Không nên thay đổi sang URL dạng thư mục chỉ vì trông ngắn hơn nếu hệ thống không thể chuẩn hóa, chuyển hướng và duy trì ánh xạ ổn định.
Yêu cầu triển khai kỹ thuật

Đồng bộ giao diện, máy chủ và dữ liệu SEO
Khi người dùng chọn hoặc bỏ một bộ lọc, giao diện cần tạo đúng URL chuẩn ngay từ đầu. Máy chủ phải hiểu cùng một bộ quy tắc để việc tải trực tiếp, tải lại trang và chia sẻ URL đều trả về đúng trạng thái.
Các thành phần sau cần đồng bộ:
- URL được tạo trong giao diện bộ lọc.
- URL trả về khi render phía máy chủ.
- Thẻ canonical.
- Liên kết trong phân trang.
- Breadcrumb và liên kết danh mục.
- Sitemap dành cho các trang bộ lọc được chọn index.
- Tiêu đề, mô tả và nội dung của trang đích.
- Mã trạng thái HTTP cho URL chuyển hướng, không hợp lệ hoặc không còn tồn tại.
Khả năng thực thi phụ thuộc đáng kể vào kiến trúc website. Khi đánh giá hệ thống CMS tối ưu cho SEO, cần kiểm tra khả năng tùy biến router, canonical, chuyển hướng, sitemap và cách nền tảng render nội dung bộ lọc.
Tách logic lọc khỏi logic index
Một bộ lọc có thể rất hữu ích cho mua sắm nhưng không nhất thiết cần index. Do đó, hệ thống nên có lớp cấu hình riêng để xác định:
- Thuộc tính nào được phép xuất hiện trong URL.
- Tổ hợp nào được tạo liên kết HTML có thể thu thập.
- Tổ hợp nào có canonical tự tham chiếu.
- Tổ hợp nào được đưa vào sitemap.
- Trang nào cần nội dung biên tập riêng.
Không nên để mọi tổ hợp được tạo tự động rồi dùng một chỉ thị chung để sửa hậu quả. Kiểm soát không gian URL ngay từ nguồn thường rõ ràng và bền vững hơn.
Quy trình kiểm tra trước khi đưa vào vận hành
- Liệt kê toàn bộ tham số mà danh mục có thể nhận.
- Xác định tham số nào làm thay đổi tập sản phẩm, thứ tự hiển thị hoặc chỉ thay đổi giao diện.
- Viết bảng quy tắc cho tên, thứ tự, định dạng và giá trị mặc định.
- Kiểm tra cùng một trạng thái được tạo qua nhiều thứ tự thao tác khác nhau.
- Thử URL có tham số đảo thứ tự, lặp giá trị, viết hoa, giá trị rỗng và giá trị không hợp lệ.
- Kiểm tra chuyển hướng có đưa về đúng URL chuẩn và không tạo chuỗi chuyển hướng.
- Đối chiếu canonical, liên kết nội bộ, sitemap và mã trạng thái HTTP.
- Kiểm tra phân trang khi thêm hoặc bỏ bộ lọc.
- Theo dõi nhật ký máy chủ và báo cáo index để phát hiện mẫu URL ngoài dự kiến.
- Đánh giá lại danh sách trang bộ lọc được index khi danh mục và nhu cầu tìm kiếm thay đổi.
Lựa chọn cuối cùng giữa query string, đường dẫn tĩnh, canonical, chuyển hướng hay noindex phụ thuộc vào nền tảng, quy mô danh mục và khả năng triển khai kỹ thuật. Mục tiêu không phải tạo URL đẹp theo một mẫu duy nhất, mà là bảo đảm mỗi trạng thái lọc có cách biểu diễn ổn định, người dùng truy cập đúng nội dung và hệ thống không phát sinh nhiều URL cho cùng một kết quả.
