Redirect 301 và 302 khác nhau thế nào?
Redirect 301 cho biết tài nguyên đã chuyển vĩnh viễn sang URL mới. Redirect 302 cho biết việc chuyển hướng là tạm thời và URL gốc có thể quay lại. Với SEO, dùng 301 khi URL mới là đích lâu dài. Dùng 302 khi bạn thực sự muốn Google tiếp tục xem URL gốc là đại diện.
Đây cũng là cách Google phân loại redirect vĩnh viễn và tạm thời. Trình duyệt đều có thể đưa người dùng tới trang đích, nên chọn sai status code thường không lộ ra bằng mắt. Hệ thống tìm kiếm vẫn phải quyết định URL nào nên giữ trong index.
Trước khi đi vào chi tiết, nếu bạn chưa nắm phần nền, xem thêm technical SEO là gì.
- Đổi slug vĩnh viễn, gộp bài, chuyển domain, HTTP sang HTTPS: dùng 301 hoặc 308.
- Trang bảo trì ngắn hạn, chiến dịch tạm, A/B test có kiểm soát: dùng 302 hoặc 307.
- Request phải giữ nguyên method và body: ưu tiên 307 nếu tạm thời, 308 nếu vĩnh viễn.
- Không có trang thay thế tương đương: trả 404 hoặc 410, đừng redirect về trang chủ.
Bảng so sánh 301, 302, 307 và 308
| Code | Tính chất | Phương thức request | Tình huống |
|---|---|---|---|
| 301 | Vĩnh viễn | Có thể bị đổi trong thực tế client | Di chuyển URL marketing thông thường |
| 302 | Tạm thời | Có thể bị đổi | Chiến dịch hoặc thay đổi ngắn hạn |
| 307 | Tạm thời | Giữ nguyên | API hoặc form cần bảo toàn method |
| 308 | Vĩnh viễn | Giữ nguyên | Di chuyển vĩnh viễn cần bảo toàn method |
Điểm khác biệt về method không phải mẹo SEO. Theo HTTP Semantics RFC 9110, 307 và 308 yêu cầu client không đổi method khi tự động redirect. Điều này đặc biệt quan trọng với request POST, form thanh toán và API.
Google xử lý redirect như thế nào?
Google xem redirect vĩnh viễn là tín hiệu mạnh cho URL đích canonical. Redirect tạm thời là tín hiệu yếu hơn cho việc giữ URL gốc. Nếu 302 tồn tại lâu, Google có thể suy luận việc di chuyển thực tế là vĩnh viễn. Không nên dựa vào suy luận này thay cho status code đúng.
Redirect là một tín hiệu canonicalization, không phải máy chuyển “toàn bộ sức mạnh” ngay lập tức. Google cần crawl URL cũ và mới, xử lý tín hiệu và cập nhật index. Trang đích phải có nội dung tương đương hợp lý. Khi cả hai URL vẫn cần tồn tại, xem canonical khác redirect ở điểm nào trước khi chọn cách xử lý.
6 tình huống và loại redirect nên dùng
- Đổi slug bài viết. Dùng 301 từ slug cũ tới slug mới. Cập nhật internal link, canonical, sitemap và hreflang nếu có. Không để internal link tiếp tục đi qua redirect.
- Gộp hai bài trùng intent. Chọn URL có nội dung và tín hiệu tốt hơn, hợp nhất phần hữu ích và 301 URL còn lại. Đọc Search Console trước khi xóa để không mất query có giá trị.
- Chiến dịch tạm thời. Nếu URL gốc sẽ quay lại sau chiến dịch, 302 phù hợp. Đặt ngày kết thúc và owner. Redirect tạm không có ngày review rất dễ trở thành sai lầm vĩnh viễn.
- A/B test. Giữ thời gian thử nghiệm hợp lý, dùng redirect tạm và canonical nhất quán theo hướng dẫn testing. Đừng cloaking nội dung khác bản chất cho Googlebot.
- Chuyển HTTP sang HTTPS. Dùng redirect vĩnh viễn, một hop, trên toàn bộ URL tương ứng. Cập nhật canonical, sitemap, internal link và tài nguyên để không còn mixed content.
- Xóa trang không có thay thế. Trả 404 hoặc 410. Redirect hàng loạt về trang chủ có thể bị xem như soft 404 và làm người dùng bối rối.
Với sản phẩm hết hàng, nếu chỉ tạm hết, giữ trang và thông báo thời gian dự kiến. Nếu ngừng vĩnh viễn, chỉ redirect khi có sản phẩm thay thế tương đương.
Chuỗi redirect, vòng lặp và 302 đặt nhầm chỗ hiếm khi lộ ra khi duyệt bằng mắt, đây là nhóm lỗi mà dịch vụ SEO audit rà bằng crawl toàn site và log status code.
Ví dụ cài redirect
Nginx
location = /duong-dan-cu {
return 301 https://example.com/duong-dan-moi;
}
Apache
Redirect 301 /duong-dan-cu https://example.com/duong-dan-moi
WordPress. Có thể dùng plugin redirect, cấu hình máy chủ hoặc CDN. Với website lớn, quản lý redirect bằng code và version control dễ review, test và rollback hơn. Không cài nhiều plugin cùng xử lý redirect.
Kiểm tra response thật
curl -I https://example.com/duong-dan-cu
curl -IL https://example.com/duong-dan-cuLệnh đầu cho biết status và Location ở hop đầu. Lệnh thứ hai đi theo toàn bộ chuỗi để bạn phát hiện redirect chain. Hãy kiểm tra cả URL cũ lẫn trang đích, vì trình duyệt chỉ hiện URL cuối và có thể che mất một hop sai.
Meta refresh và JavaScript redirect có nên dùng không?
Redirect phía server là lựa chọn ưu tiên vì user agent nhận status và Location ngay. Meta refresh và JavaScript redirect có thể được Google xử lý, nhưng chậm hơn, phụ thuộc vào render và tạo trải nghiệm kém. Chỉ dùng khi không thể cấu hình server.
Nếu buộc dùng client-side, giữ delay bằng 0, cung cấp link HTML tới trang đích và kiểm tra rendering. Không hiển thị một trang có nội dung khác trong vài giây rồi chuyển, vì người dùng có thể bắt đầu đọc hoặc thao tác.
Checklist kiểm tra redirect sau khi deploy
- URL cũ trả đúng 301/302/307/308, không phải 200 kèm JavaScript redirect.
- Header Location trỏ tới URL tuyệt đối đúng.
- Chỉ một hop, không chain hoặc loop.
- Trang đích trả 200, indexable và self-canonical.
- Sitemap chỉ chứa URL đích.
- Internal link, hreflang và structured data dùng URL mới.
- Không redirect tới trang không tương đương.
- Theo dõi 404, index và traffic sau thay đổi.
Một lần đổi cấu trúc URL thường kéo theo sitemap, internal link và canonical phải sửa cùng lúc. Bài toán đó thuộc về kế hoạch SEO tổng thể chứ không dừng ở việc khai báo vài dòng 301.
Tại sao redirect chain vẫn cần sửa?
Mỗi hop thêm request, độ trễ và điểm có thể lỗi. Chuỗi A → B → C → D thường xuất hiện sau nhiều lần đổi slug. Giữ redirect A để bảo toàn backlink cũ, nhưng cập nhật đích A trực tiếp tới D và sửa internal link trỏ thẳng D.
Redirect loop là lỗi P0 vì người dùng và bot không truy cập được. Test cả biến thể protocol, host, slash, chữ hoa và query. Quy tắc www/non-www kết hợp với app redirect rất dễ tạo vòng lặp khi proxy header bị đọc sai.
Không xóa redirect cũ sau vài tuần chỉ vì Google đã index URL mới. Backlink, bookmark và tài liệu cũ có thể tồn tại nhiều năm. Trong hướng dẫn site move có thay đổi URL, Google khuyến nghị giữ redirect ít nhất một năm và lâu hơn nếu có thể.
Đọc thêm: kiểm tra mobile friendly · cách thêm FAQ schema vào website đúng chuẩn google
Câu hỏi thường gặp
301 có làm mất thứ hạng không?
Redirect đúng tới trang tương đương giúp hợp nhất tín hiệu, nhưng Google cần thời gian crawl và xử lý. Biến động có thể xảy ra trong migration. Rủi ro lớn đến từ mapping sai, chain, trang đích kém và tín hiệu mâu thuẫn.
Có nên redirect mọi 404 về trang chủ?
Không. Chỉ redirect khi có trang thay thế thực sự tương đương. Nếu không có, giữ 404/410 và cung cấp trang lỗi hữu ích cho người dùng.
Kết luận
Quy tắc cốt lõi của redirect 301 vs 302 rất ngắn: vĩnh viễn dùng 301, tạm thời dùng 302. Phần khó là mapping URL, giữ trang đích tương đương và cập nhật tất cả tín hiệu liên quan. Hãy kiểm tra response thực tế thay vì chỉ nhìn trình duyệt chuyển trang.