Nội dung quảng cáo: bài viết có giới thiệu sản phẩm TỐI ƯU SEO.
Chuỗi chuyển hướng 301 là khi một URL phải qua từ hai bước chuyển hướng trở lên mới tới trang đích, còn vòng lặp là khi các bước đó quay lại chính nó. Cách sửa gọn là trỏ thẳng URL cũ tới URL cuối bằng một lần 301, rồi cập nhật liên kết nội bộ và sitemap về URL cuối đó.
301 và 302 khác nhau thế nào
Theo Google Search Central, chuyển hướng vĩnh viễn gồm HTTP 301 và 308. Chuyển hướng tạm thời gồm HTTP 302, 303 và 307. Google xem chuyển hướng vĩnh viễn là tín hiệu rằng trang đích nên là URL chuẩn, và hiển thị trang đích trong kết quả tìm kiếm.
Với chuyển hướng tạm thời, Google vẫn theo liên kết nhưng không coi trang đích là URL chuẩn. Trang nguồn là trang được giữ lại trong kết quả.
Vì vậy, hãy dùng 301 khi việc chuyển đã chốt, ví dụ đổi đường dẫn hoặc đổi tên miền. Dùng 302 cho tình huống ngắn hạn như bảo trì một dịch vụ. Google cũng nêu rằng chuyển hướng phía máy chủ là cách đáng tin cậy để báo cho Google Search và người dùng biết trang đã đổi chỗ.
Chuỗi chuyển hướng và vòng lặp gây hại gì
Chuỗi chuyển hướng xảy ra khi A chuyển tới B, B chuyển tới C. Thường nó hình thành dần: bạn đổi đường dẫn nhiều lần, thêm HTTPS, rồi thêm quy tắc www, và mỗi lần chỉ thêm một bước mà không dọn bước cũ.
Vòng lặp là khi A chuyển tới B và B lại chuyển về A. Trình duyệt sẽ báo lỗi, còn người dùng không vào được trang.
Trong báo cáo lập chỉ mục của Search Console, mục "Redirect error" liệt kê các nguyên nhân Google gặp. Theo Search Console Help, đó là:
- chuỗi chuyển hướng quá dài;
- vòng lặp chuyển hướng;
- URL chuyển hướng cuối cùng vượt quá độ dài URL tối đa;
- URL sai hoặc rỗng nằm trong chuỗi.
Chuỗi dài còn khiến mỗi lượt tải trang phải qua thêm các lượt yêu cầu, nên trang tới tay người dùng chậm hơn. Mức chậm cụ thể tuỳ máy chủ, nên hãy tự đo trên website của bạn.
Cách phát hiện bằng curl và công cụ
Cách nhanh là dùng curl. Lệnh dưới đây chỉ lấy phần header và đi theo các chuyển hướng:
curl -sIL https://example.com/trang-cu | grep -iE "^(HTTP|location)"
Mỗi dòng HTTP là một bước, mỗi dòng location là nơi bước đó trỏ tới. Nếu thấy từ hai dòng location trở lên, bạn đang có chuỗi. Nếu cùng một URL lặp lại, đó là vòng lặp.
Theo tài liệu curl, tuỳ chọn -L (--location) làm curl gửi lại yêu cầu tới địa chỉ mới khi máy chủ trả về header Location kèm mã 3XX. Mặc định curl dừng sau 50 lần chuyển hướng, và bạn có thể đổi bằng --max-redirs. Với nghi ngờ vòng lặp, đặt --max-redirs 10 để lệnh dừng sớm.
Ngoài curl, bạn có thể:
- mở mục "Redirect error" trong báo cáo lập chỉ mục của Search Console để xem URL Google đã gặp lỗi;
- dùng Lighthouse, công cụ mà Search Console Help gợi ý để xem chi tiết chuyển hướng;
- dùng Cloudflare Trace nếu bạn dùng Cloudflare, để biết quy tắc nào được kích hoạt cho một URL. Điều này được nêu trong tài liệu Cloudflare.
Với website có hàng trăm URL, kiểm từng URL bằng tay rất mất công. Bạn có thể dùng công cụ TỐI ƯU SEO để kiểm tra hàng loạt trang, trong đó các luật cơ bản chạy miễn phí.
Cách sửa trên Apache, Nginx, Cloudflare
Nguyên tắc chung không đổi theo nền tảng: mỗi URL cũ chỉ chuyển một lần, thẳng tới URL cuối cùng. Hãy lập danh sách URL cũ và URL đích, sửa quy tắc cho từng dòng, rồi chạy lại curl để xác nhận.
Apache
Google nêu Apache dùng mod_alias cho chuyển hướng đơn giản (Redirect permanent) và mod_rewrite cho trường hợp phức tạp (RewriteRule kèm cờ [R=301]). Ví dụ:
Redirect permanent "/trang-cu" "https://example.com/trang-moi"
Với chuyển hướng HTTPS trong .htaccess, tài liệu Apache có công thức dùng [R=301,L]. Cũng theo tài liệu này, nếu có quyền sửa cấu hình máy chủ thì nên dùng Redirect trong VirtualHost riêng cho tên miền không chuẩn, thay vì mod_rewrite.
Lỗi hay gặp là một quy tắc trỏ tới URL mà quy tắc khác lại chuyển đi tiếp. Khi sửa, hãy trỏ thẳng tới URL cuối.
Nginx
Tài liệu Nginx cho phép chuyển 301 bằng return hoặc rewrite ... permanent:
location = /trang-cu {
return 301 https://example.com/trang-moi;
}
rewrite ^/old/(.*)$ /new/$1 permanent;
Cần lưu ý cờ last trong khối location. Tài liệu cảnh báo rằng nginx có thể lặp lại quá trình tìm location, và khi đó "nginx will make 10 cycles and return the 500 error". Hãy dùng break khi phù hợp, và kiểm tra bằng curl sau mỗi lần nạp lại cấu hình.
Cloudflare
Theo tài liệu Cloudflare, Single Redirects cho phép tạo chuyển hướng tĩnh hoặc động. Giao diện dùng wildcard giúp một quy tắc phủ nhiều URL mà không cần biểu thức chính quy. Hạn mức và tính năng phụ thuộc gói dịch vụ.
Nếu máy chủ gốc cũng chuyển hướng, hãy rà để hai nơi không tạo ra hai bước nối tiếp. Chẳng hạn Cloudflare chuyển sang HTTPS rồi máy chủ gốc lại chuyển thêm một lần nữa sang đường dẫn mới. Gộp về một nơi quản lý sẽ dễ kiểm soát hơn.
Cập nhật liên kết nội bộ và sitemap sau khi sửa
Chuyển hướng 301 giúp URL cũ không chết, nhưng không nên để liên kết nội bộ tiếp tục trỏ qua URL cũ. Hãy sửa menu, bài viết và breadcrumb để trỏ thẳng tới URL cuối. Làm vậy, người dùng và bot không phải qua thêm bước nào.
Sitemap cũng nên chỉ chứa URL cuối cùng, trả mã 200. Nếu sitemap còn liệt kê URL đã chuyển hướng, bạn đang đưa cho bot đúng những URL mà bạn muốn nó bỏ qua.
Danh sách việc cần làm sau khi sửa:
- Chạy lại
curl -sILcho từng URL cũ và xác nhận chỉ còn một bước 301. - Thay liên kết nội bộ trỏ tới URL cũ bằng URL mới.
- Cập nhật sitemap, chỉ giữ URL đích.
- Theo dõi mục "Redirect error" trong Search Console để xem lỗi còn xuất hiện không.
Nếu bạn gặp lỗi chặn bot ở tầng khác, bài lỗi robots.txt chặn Google sẽ giúp bạn rà tiếp.
Muốn rà chuỗi chuyển hướng cùng nhiều mục kỹ thuật khác, bạn có thể bắt đầu từ trang chủ TỐI ƯU SEO hoặc đăng ký dùng thử để kiểm tra bằng luật miễn phí và credit tặng khi đăng ký.
Nguồn tham khảo
- Redirects and Google Search, Google Search Central. Đọc ngày 22/10/2026.
- Page indexing report, Google Search Console Help. Đọc ngày 22/10/2026.
- curl man page, curl. Đọc ngày 22/10/2026.
- Apache mod_rewrite: Redirecting and Remapping, Apache HTTP Server. Đọc ngày 22/10/2026.
- Module ngx_http_rewrite_module, Nginx. Đọc ngày 22/10/2026.
- Single Redirects, Cloudflare. Đọc ngày 22/10/2026.
Bài do TỐI ƯU SEO biên soạn từ các nguồn ghi ở cuối bài, đã qua kiểm tra trước khi đăng.
Thấy chỗ chưa đúng? Báo lỗi bài này.