Pagination (phân trang) là kỹ thuật chia nội dung dài hoặc danh sách lớn thành nhiều trang con để người dùng dễ đọc và hệ thống dễ quản lý. Bạn sẽ thấy phân trang xuất hiện ở hầu hết các trang thương mại điện tử, blog, diễn đàn và kết quả tìm kiếm.

Bài viết này giải thích chi tiết phân trang là gì, cách công cụ tìm kiếm xử lý phân trang, các lỗi thường gặp khi triển khai và chiến lược tối ưu giúp bảo vệ giá trị SEO. Nội dung bao gồm: nguyên lý hoạt động của phân trang, ảnh hưởng đến thu thập dữ liệu, so sánh các phương pháp triển khai và checklist kiểm tra thực tế.

Pagination hoạt động như thế nào

Phân trang xuất hiện khi một trang web có quá nhiều nội dung để hiển thị trên một màn hình duy nhất. Thay vì tải hàng nghìn sản phẩm hoặc bài viết cùng lúc, hệ thống chia thành các trang nhỏ hơn, mỗi trang hiển thị một lượng nội dung cố định.

Sơ đồ minh họa cách pagination chia nội dung thành nhiều trang con
Phân trang chia tập dữ liệu lớn thành các trang có kích thước quản lý được

Các thành phần cơ bản của giao diện phân trang

Một hệ thống phân trang tiêu chuẩn thường bao gồm:

Thành phần Chức năng Ví dụ thực tế
Số trang Chỉ định vị trí hiện tại Trang 1, 2, 3…
Nút trước/sau Di chuyển liên tiếp « Trước, Sau »
Trang đầu/cuối Nhảy nhanh đến biên Đầu, Cuối
Hiển thị tổng số Thông tin phạm vi Hiển thị 1-20 / 356 kết quả

Ví dụ cụ thể: Shopee hiển thị 60 sản phẩm mỗi trang. Với danh mục có 10.000 sản phẩm, người dùng sẽ thấy khoảng 167 trang. Nếu tải toàn bộ 10.000 sản phẩm trong một trang, thời gian tải có thể vượt 10 giây – đủ để 53% người dùng rời đi theo nghiên cứu của Google.

Cách máy chủ xử lý yêu cầu phân trang

Khi người dùng click vào trang 2, hệ thống thực hiện:

  1. Phía client: Trình duyệt gửi tham số URL (ví dụ: ?page=2 hoặc /page/2/)
  2. Phía server: Database truy vấn với LIMITOFFSET (SQL) hoặc tương đương
  3. Render: Template engine tạo HTML với dữ liệu mới, giữ nguyên layout
  4. Phản hồi: Server trả về trang mới với mã trạng thái HTTP 200

Cấu trúc URL phổ biến:

Kiểu URL Ví dụ Ưu điểm
Query parameter /san-pham?page=3 Dễ triển khai, tương thích cao
Path-based /san-pham/trang-3/ Thân thiện SEO hơn, dễ đọc
Hash fragment /san-pham#page=3 Không khuyến khích – bot bỏ qua phần sau #

Tác động của pagination đến SEO

Phân trang tạo ra thách thức đặc biệt cho SEO vì nó phân tán tín hiệu xếp hạng và làm phức tạp quá trình thu thập dữ liệu.

Biểu đồ so sánh giá trị SEO tập trung và phân tán do pagination
Phân trang không tối ưu khiến giá trị liên kết bị phân tán giữa nhiều trang

Vấn đề nội dung trùng lặp (Duplicate Content)

Các trang phân trang thường có cấu trúc HTML gần như giống hệt nhau: cùng header, footer, sidebar, chỉ khác danh sách sản phẩm/bài viết. Google có thể đánh giá đây là nội dung trùng lặp, dẫn đến:

  • Crawl budget bị lãng phí cho nhiều URL tương tự
  • Khó xác định trang nào đại diện cho nội dung chính
  • Giá trị liên kết nội bộ bị phân mảnh

Trường hợp điển hình: Một blog có 50 bài viết cùng chuyên mục, mỗi trang hiển thị 10 bài. Các trang /chuyen-muc/page/2/ đến /page/5/ đều có tiêu đề “Chuyên mục X – Trang Y” – Google có thể không index hết hoặc chọn sai trang ưu tiên.

Thách thức về Crawl Budget

Với website lớn, bot Google có giới hạn số trang thu thập mỗi lần ghé thăm. Phân trang kém tối ưu tạo ra:

  • Hàng nghìn URL có ít giá trị riêng biệt
  • Bot dành thời gian cho trang phân trang thay vì trang sản phẩm chi tiết
  • Trang quan trọng bị bỏ sót do giới hạn crawl

Ví dụ thực tế: Một sàn TMĐT có 500.000 sản phẩm, mỗi danh mục con tạo 50 trang phân trang. Tổng cộng 10.000 URL phân trang chỉ để hiển thị danh sách – chiếm đáng kể crawl budget mà không mang lại giá trị tìm kiếm trực tiếp.

Mất tín hiệu xếp hạng (Diluted Ranking Signals)

Khi nhiều trang cùng cạnh tranh cho từ khóa tương tự, tín hiệu xếp hạng bị chia nhỏ:

Tín hiệu Tác động phân trang
Backlink Liên kết đến trang 3 ít giá trị hơn trang 1
Social share Share phân tán, không tập trung
Engagement Time on site chia đều, khó đo lường
Internal link Anchor text trùng lặp, không đa dạng

Các phương pháp tối ưu phân trang cho SEO

Google từng hỗ trợ thẻ rel="prev/next" nhưng đã ngừng sử dụng từ 2019. Hiện tại, có ba hướng tiếp cận chính để xử lý phân trang.

So sánh ba phương pháp tối ưu pagination: View All, Noindex, và Load More
Mỗi phương pháp tối ưu phân trang phù hợp với quy mô và mục tiêu SEO khác nhau

Phương pháp 1: Trang “Xem tất cả” (View All Page)

Tạo một trang duy nhất hiển thị toàn bộ nội dung, đặt canonical về trang này từ tất cả các trang phân trang.

Cách triển khai:

Trang phân trang: /san-pham?page=2
→ <link rel="canonical" href="/san-pham/xem-tat-ca/" />

Ưu điểm:

  • Tập trung toàn bộ giá trị SEO vào một URL
  • Người dùng có thể tìm kiếm trong trang (Ctrl+F)
  • Đơn giản hóa cấu trúc liên kết nội bộ

Nhược điểm:

  • Trang có thể quá nặng nếu >1000 mục
  • Không phù hợp với danh mục cực lớn
  • Cần lazy loading để tối ưu hiệu suất

Phù hợp khi: Danh mục <500 mục, sản phẩm có hình ảnh nhỏ, ưu tiên SEO lên top cho từ khóa danh mục.

Phương pháp 2: Noindex cho trang phân trang

Giữ nguyên phân trang cho người dùng nhưng chặn bot index các trang từ 2 trở đi.

Cách triển khai:

<!-- Trang 2, 3, 4... -->
<meta name="robots" content="noindex, follow" />

Hoặc trong robots.txt:

Disallow: /*?page=*

Ưu điểm:

  • Bảo toàn crawl budget cho trang quan trọng
  • Tránh vấn đề nội dung trùng lặp
  • Đơn giản, không cần thay đổi cấu trúc lớn

Nhược điểm:

  • Mất khả năng xếp hạng cho từ khóa dài ở trang sâu
  • Các sản phẩm ở trang 3+ khó được phát hiện qua tìm kiếm
  • Cần đảm bảo XML sitemap bao gồm tất cả URL sản phẩm

Phù hợp khi: Website lớn, ưu tiên crawl budget, mỗi sản phẩm đã có URL riêng được index.

Phương pháp 3: Tải thêm (Load More / Infinite Scroll)

Thay thế phân trang truyền thống bằng nút “Tải thêm” hoặc tự động tải khi cuộn.

Cách triển khai đúng:

Sử dụng History API để cập nhật URL mỗi khi tải thêm:

// Khi người dùng tải thêm trang 2
history.pushState(null, '', '/san-pham/trang-2/');

Đồng thời cung cấp phiên bản phân trang truyền thống cho bot:

<link rel="canonical" href="/san-pham/" />

Ưu điểm:

  • Trải nghiệm người dùng mượt mà, đặc biệt mobile
  • Giảm số lần click, tăng engagement
  • Phù hợp với hành vi duyệt hiện đại

Nhược điểm:

  • Triển khai phức tạp, cần developer giỏi
  • Dễ gây lỗi nếu không xử lý URL đúng cách
  • Khó debug khi có vấn đề SEO

Phù hợp khi: Ứng dụng web, nền tảng social, hoặc khi UX là ưu tiên hàng đầu.

Phương pháp Độ phức tạp SEO hiệu quả UX hiện đại Quy mô phù hợp
View All Thấp Cao Trung bình <500 mục
Noindex Thấp Trung bình Trung bình >1000 mục
Load More Cao Trung bình Cao Mọi quy mô

Checklist kỹ thuật triển khai phân trang

Cấu trúc URL và liên kết

  • [ ] URL phân trang có quy tắc nhất quán (chọn ?page= hoặc /trang-/ và dùng xuyên suốt)
  • [ ] Trang 1 không có tham số phân trang (/san-pham/ thay vì /san-pham?page=1)
  • [ ] Liên kết đến trang không tồn tại trả về 404 thay vì 200 với nội dung rỗng
  • [ ] Có liên kết đến tất cả các trang từ trang hiện tại (không chỉ trang kế tiếp)

Thẻ HTML quan trọng

Thẻ Vị trí Mục đích
<title> Mỗi trang phân trang Độc nhất, ví dụ: “Sản phẩm (Trang 2) – Tên thương hiệu”
<meta name="description"> Mỗi trang Khác biệt hoặc để trống nếu noindex
<link rel="canonical"> Theo chiến lược đã chọn Trỏ về trang tập trung hoặc tự tham chiếu
<meta robots> Trang 2+ nếu cần noindex, follow khi dùng phương pháp noindex

Xử lý trường hợp đặc biệt

Trang phân trang có bộ lọc:

Khi người dùng áp dụng lọc giá, màu sắc, kết hợp với phân trang tạo ra URL phức tạp:

/san-pham?color=red&price=100-200&page=3

Giải pháp: Sử dụng tham số URL trong Google Search Console để chỉ định cách xử lý, hoặc chuyển bộ lọc sang AJAX không thay đổi URL.

Phân trang với thứ tự sắp xếp động:

/san-pham?sort=price_asc&page=2
/san-pham?sort=price_desc&page=2

Mỗi cách sắp xếp tạo ra tập URL riêng. Nên chọn một thứ tự mặc định làm canonical, các biến thể khác đặt canonical về mặc định hoặc noindex.

Lỗi phân trang phổ biến và cách khắc phục

Danh sách các lỗi pagination thường gặp với biểu tượng cảnh báo
Nhận diện sớm lỗi phân trang giúp tránh mất traffic tìm kiếm không đáng có

Lỗi 1: Trang phân trang cuối cùng bị trống

Hiện tượng: /san-pham?page=99 trả về 200 OK nhưng không có sản phẩm nào.

Hậu quả: Google coi là “soft 404” – trang không hữu ích, giảm đánh giá chất lượng website.

Khắc phục: Kiểm tra tổng số mục, tính toán số trang tối đa. Trang vượt quá giới hạn trả về 404 hoặc redirect 301 về trang cuối cùng có dữ liệu.

Lỗi 2: Canonical trỏ sai hướng

Hiện tượng: Trang 2 đặt canonical về trang 1, nhưng nội dung hai trang khác nhau.

Hậu quả: Google bỏ qua canonical do không hợp lệ, hoặc index sai trang.

Khắc phục: Canonical chỉ dùng khi có trang “Xem tất cả” thực sự chứa toàn bộ nội dung. Nếu không, để canonical tự tham chiếu hoặc dùng noindex.

Lỗi 3: Thiếu liên kết đến sản phẩm ở trang sâu

Hiện tượng: Sản phẩm chỉ xuất hiện ở trang phân trang 5+, không có liên kết trực tiếp từ trang chủ hoặc chuyên mục cấp 1.

Hậu quả: Google không phát hiện hoặc đánh giá thấp URL này do “click depth” quá xa.

Khắc phục: Đảm bảo mọi sản phẩm có thể đến trong ≤3 click từ trang chủ. Sử dụng “Sản phẩm nổi bật”, “Xem nhiều”, hoặc liên kết trực tiếp từ chuyên mục cha.

Lỗi 4: Phân trang tạo vòng lặp vô hạn

Hiện tượng: Tham số URL có thể kết hợp tạo vòng lặp: ?page=2?page=2&page=2 → …

Hậu quả: Bot crawl vô hạn, crawl budget cạn kiệt.

Khắc phục: Chuẩn hóa URL trước khi xử lý, loại bỏ tham số trùng lặp, giới hạn giá trị page tối đa.

Đo lường hiệu quả phân trang

Sau khi triển khai tối ưu, theo dõi các chỉ số sau:

Chỉ số Công cụ Mục tiêu
Số trang phân trang được index Google Search Console → Coverage Giảm nếu dùng noindex, ổn định nếu View All
Crawl requests cho trang phân trang Log file analysis Giảm dần theo thời gian
Tỷ lệ thoát trang phân trang Google Analytics 4 <40%
Thời gian tải trang PageSpeed Insights <2.5 giây (LCP)
Số sản phẩm/bài viết được index Site:example.com Tăng hoặc ổn định

Ví dụ thực tế từ một dự án TMĐT: Sau khi chuyển từ phân trang tự do sang noindex trang 2+ và tối ưu XML sitemap, số sản phẩm index tăng 34% trong 3 tháng, traffic từ tìm kiếm long-tail tăng 28%. Crawl budget tiết kiệm được chuyển sang các trang sản phẩm mới.

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

Phân trang có làm giảm thứ hạng trang chủ danh mục không?

Không trực tiếp, nhưng nếu triển khai sai có thể phân tán giá trị. Dùng canonical về trang “Xem tất cả” hoặc noindex trang 2+ để tập trung tín hiệu. Quan trọng là đảm bảo trang chủ danh mục có nội dung độc nhất, mô tả giá trị – không chỉ là danh sách sản phẩm.

Google có index trang phân trang sâu không?

Google có thể index nếu thấy hữu ích, nhưng thường ưu tiên trang đầu. Từ 2019, Google không dùng rel="prev/next" nữa mà tự đánh giá. Nếu nội dung trang sâu có giá trị riêng (ví dụ: bình luận, đánh giá), vẫn có khả năng index.

Nên dùng số trang hay “Tải thêm” cho di động?

“Tải thêm” thường cho UX tốt hơn trên mobile do giảm thao tác click và phù hợp hành vi cuộn. Tuy nhiên, cần triển khai đúng kỹ thuật để URL cập nhật và bot vẫn truy cập được nội dung. Nếu không có nguồn lực kỹ thuật, phân trang số vẫn là lựa chọn an toàn.

Phân trang ảnh hưởng đến Core Web Vitals như thế nào?

Phân trang tốt cải thiện LCP (Largest Contentful Paint) vì giảm lượng nội dung tải ban đầu. Ngược lại, tải thêm nội dung khi cuộn có thể ảnh hưởng CLS (Cumulative Layout Shift) nếu layout nhảy. Nên dùng placeholder có kích thước cố định cho nội dung sẽ tải.

Kết luận

Pagination là công cụ cần thiết để quản lý nội dung quy mô lớn, nhưng đòi hỏi chiến lược rõ ràng để không làm hại SEO. Lựa chọn giữa “Xem tất cả”, noindex, hay “Tải thêm” phụ thuộc vào quy mô dữ liệu, nguồn lực kỹ thuật và ưu tiên business. Điểm then chốt: đừng để bot lãng phí tài nguyên cho hàng nghìn trang danh sách trong khi các trang chi tiết mang lại giá trị thực còn chưa được khám phá.

Nếu website của bạn đang gặp tình trạng nhiều trang phân trang index nhưng không mang lại traffic, hãy audit lại cấu trúc và áp dụng một trong các phương pháp đã trình bày. Kết quả thường thấy sau 4-8 tuần triển khai đúng.