Chuyển hướng 301 và 308
301 và 308 đều là chuyển hướng vĩnh viễn. Tìm hiểu khác biệt về bảo toàn phương thức và body HTTP, cách Google/Bing xử lý hai mã, và khi nào API hoặc biểu mẫu thực sự cần 308.
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này
- Công cụ trực tuyến liên quanHTTP Status & Redirect Checker
301 và 308 đều là chuyển hướng vĩnh viễn, và Google cùng Bing xử lý chúng giống nhau cho crawl, lập chỉ mục và tín hiệu. Khác biệt nằm ở giao thức: 308 bảo đảm client lặp lại cùng phương thức và body tại URL mới, còn 301 mơ hồ riêng về việc POST có thể đổi thành GET. Với di chuyển trang, site hoặc HTTPS thông thường, 301 vẫn là mặc định thực dụng vì được hỗ trợ rộng. Chỉ dùng 308 khi phải giữ một yêu cầu không phải GET, chẳng hạn endpoint API, webhook, action biểu mẫu hoặc luồng POST xác thực; ngay cả khi đó vẫn phải kiểm thử thông tin xác thực, cookie và tính idempotent bằng client thật. Không có lợi ích SEO khi đổi 301 thành 308.
Tóm tắt — 301 và 308 đều là chuyển hướng vĩnh viễn; Google và Bing xử lý 308 giống 301. Khác biệt kỹ thuật cốt lõi là bảo đảm về phương thức: 308 yêu cầu trình duyệt gửi lại yêu cầu theo đúng phương thức ban đầu, nên một lần gửi biểu mẫu vẫn là gửi biểu mẫu; 301 không bảo đảm nghiêm ngặt điều đó với POST. Với chuyển hướng “trang này đã di chuyển” thông thường, hãy dùng 301. Dùng 308 khi chuyển một thứ không chỉ là trang thường, như API hoặc biểu mẫu, và phải giữ nguyên phương thức yêu cầu. Tuy vậy, riêng mã trạng thái không bảo đảm cookie hay thông tin xác thực cũng tồn tại; hãy kiểm thử bằng client thật.
Hai mã này có nghĩa gì
Khi máy chủ đưa bạn từ URL này sang URL khác, phản hồi mang một mã trạng thái. Hai mã dưới đây đều có nghĩa “đã chuyển vĩnh viễn”:
- 301 — “Moved Permanently” (Đã chuyển vĩnh viễn). Mã chuyển hướng vĩnh viễn lâu đời nhất, tồn tại từ thời kỳ đầu của web.
- 308 — “Permanent Redirect” (Chuyển hướng vĩnh viễn). Mã mới hơn, được bổ sung năm 2015, làm cùng công việc và thêm một bảo đảm.
Bảo đảm bổ sung đó là toàn bộ câu chuyện. Khi bạn gửi biểu mẫu, trình duyệt gửi yêu cầu POST mang dữ liệu. Với 301 kiểu cũ, trình duyệt được phép âm thầm đổi POST thành GET khi theo chuyển hướng, khiến dữ liệu bị bỏ lại. 308 cấm việc đó: client phải lặp lại chính yêu cầu cũ, gồm phương thức và dữ liệu, tại địa chỉ mới.
Điều này có quan trọng với SEO không? Không.
Đây là phần thường bị hiểu sai: đối với tìm kiếm, 301 và 308 giống nhau. Tài liệu Google mô tả 308 là “equivalent to 301” (bản dịch) «tương đương với 301». Gary Illyes của Google nói thẳng hơn: “we just merge that with 301 so we really don’t care.” (bản dịch) «chúng tôi chỉ hợp nhất nó với 301 nên thực sự không quan tâm». Fabrice Canel của Bing cũng xác nhận: “Bing treats 308 redirects the same as 301 redirects.” (bản dịch) «Bing xử lý chuyển hướng 308 giống chuyển hướng 301.»
Vì vậy, hãy bỏ qua lời khuyên rằng 308 “tốt hơn cho SEO” hoặc nên đổi mọi 301 thành 308 để tăng thứ hạng. Không có lợi ích xếp hạng; các công cụ tìm kiếm đã nói rõ. Evidence for this claim Google treats 308 as equivalent to 301 for Search while advising sites to use the semantically appropriate status code. Scope: Google Search processing; client behavior still differs when method preservation matters. Confidence: high · Verified: Google: HTTP status codes and Search
Vậy nên dùng loại nào?
- Chuyển hướng một trang thông thường — đổi URL, chuyển HTTPS hoặc đổi miền? → Dùng 301. Đây là mặc định được phần lớn công cụ, CDN và plugin hỗ trợ sẵn.
- Chuyển một thứ mang dữ liệu — endpoint API, URL gửi biểu mẫu hoặc POST đăng nhập? → Dùng 308 để phương thức ban đầu còn nguyên qua hop. Dù vậy, vẫn phải xác nhận thông tin xác thực và cookie đến đúng như dự kiến vì riêng mã trạng thái không bảo đảm điều đó.
Nếu không chuyển hướng API hay biểu mẫu, gần như chắc chắn bạn nên dùng 301. Đó là phiên bản ngắn gọn.
Muốn hiểu đầy đủ vì sao 308 được tạo ra, Google và Bing đã nói chính xác gì và cách triển khai từng mã? Hãy chuyển sang thẻ Nâng cao.
Tóm tắt — Hai mã này cùng biểu thị một lần chuyển vĩnh viễn và được Google lẫn Bing xử lý như nhau. Tài liệu Google nói 308 “equivalent to
301” (bản dịch) «tương đương với301», Illyes nói “we just merge that with 301,” (bản dịch) «chúng tôi chỉ hợp nhất nó với 301», còn Canel xác nhận Bing xử lý hai mã như nhau. Ở tầng giao thức, khác biệt cốt lõi là giữ phương thức: 308 theo RFC 7538 năm 2015 bảo đảm client lặp lại cùng phương thức tại URL mới và mang theo body; 301 có từ thời HTTP/1.0 và mơ hồ riêng về việc đổi POST thành GET. RFC không quy định PUT hay DELETE theo hướng nào, nên đừng khái quát cảnh báo POST sang chúng. 308 tồn tại để trở thành mã vĩnh viễn song hành với 307: RFC 7231 đã có mã tạm thời giữ phương thức nhưng thiếu bản vĩnh viễn, và 308 lấp khoảng trống đó. Mặc định dùng 301 cho di chuyển trang, site hoặc HTTPS thông thường vì lâu đời, phổ biến và được CDN/CMS/plugin hỗ trợ tốt hơn. Chỉ dùng 308 khi phải giữ yêu cầu không phải GET như endpoint API, webhook, action biểu mẫu hoặc luồng POST xác thực. Ngay cả khi đó, hãy kiểm thử thông tin xác thực, cookie và tính idempotent bằng client thật. Không mã nào “tốt hơn cho SEO”; đó là quan niệm sai đã được các công cụ tìm kiếm bác bỏ rõ ràng.
Khác biệt ngữ nghĩa phải được xét trước
301 và 308 cùng báo cho công cụ tìm kiếm rằng tài nguyên đã chuyển vĩnh viễn và đích nên trở thành canonical. Chúng chỉ khác nhau ở một bảo đảm cơ học hẹp về cách client phát lại yêu cầu.
- 301 (Moved Permanently) là mã chuyển hướng vĩnh viễn gốc từ thời HTTP/1.0. Điểm quan trọng là mã này luôn mơ hồ về việc có phải giữ phương thức yêu cầu hay không. Trong thực tế, trình duyệt và client lâu nay có thể đổi POST thành GET khi theo 301; điều đó ổn với trang thường nhưng âm thầm phá chức năng phụ thuộc vào phương thức hoặc body yêu cầu.
- 308 (Permanent Redirect) là phiên bản nghiêm ngặt. Nó bảo đảm client lặp lại chính phương thức và body cũ tại URL mới. POST vẫn là POST và payload được mang theo.
Cách nói một câu: 308 là 301 có thêm bảo đảm trình duyệt không âm thầm đổi POST thành GET. Evidence for this claim RFC 9110 defines both 301 and 308 as permanent redirects; 308 forbids changing the request method, while 301 permits POST-to-GET rewriting for historical reasons. Scope: HTTP semantics for 301 and 308 responses. Confidence: high · Verified: IETF: RFC 9110 §§15.4.2, 15.4.9 IETF: RFC 7538 §3 — 308 Permanent Redirect
Vì sao 308 tồn tại: thiếu một “307 vĩnh viễn”
Đây là phần hầu như không ai giải thích, nhưng là cách rõ nhất để hiểu toàn bộ so sánh: đặc tả từng có một khoảng trống.
Các mã chuyển hướng hiện đại tạo thành lưới tạm thời/vĩnh viễn và lỏng/nghiêm ngặt:
| Tạm thời | Vĩnh viễn | |
|---|---|---|
| Có thể đổi phương thức (lỏng) | 302 | 301 |
| Giữ phương thức (nghiêm ngặt) | 307 | 308 |
RFC 7231 định nghĩa 307, một chuyển hướng tạm thời giữ phương thức, làm đối tác nghiêm ngặt của 302 vốn lỏng và mơ hồ. Nhưng RFC chưa có mã vĩnh viễn giữ phương thức. RFC 7538 tháng 4 năm 2015 bổ sung 308 để lấp khoảng trống: 308 đối với 301 giống như 307 đối với 302. Nếu đã đọc bài so sánh 302 và 307 trong cụm này, quan hệ 301 với 308 là cùng một quan hệ ở hàng vĩnh viễn — lỏng và nghiêm ngặt.
301 có trước toàn bộ khung này. Nó đến từ HTTP/1.0, trước khi khái niệm “giữ phương thức” được chuẩn hóa; đó chính là lý do mã bị mơ hồ và cần phát minh 308 thay vì chỉ làm rõ 301.
“Giữ phương thức và body” có nghĩa gì trong thực tế
Với phần lớn chuyển hướng — người dùng nhấp liên kết, trình duyệt gửi GET, máy chủ đưa họ đến nơi khác — không có khác biệt thực tế. Trình duyệt hiện đại giữ GET khi theo 301. Khác biệt chỉ quan trọng khi yêu cầu không phải GET thường:
| Loại yêu cầu | Sau 301 | Sau 308 |
|---|---|---|
GET (trang thường) | Thực tế vẫn theo bằng GET | Theo bằng GET |
POST (biểu mẫu, API) | Có thể âm thầm đổi thành GET, mất body | Lặp lại bằng POST, giữ nguyên body |
PUT / DELETE (API) | RFC không ghi rõ; ngoại lệ lịch sử chỉ là POST→GET, nên phải coi là phụ thuộc client và chưa xác minh | Giữ phương thức; quy tắc tự động theo của 308 không chỉ dành cho POST |
Rủi ro của 301 tập trung vào POST và body yêu cầu — biểu mẫu, API, webhook và luồng xác thực. Câu “301 luôn phá biểu mẫu” là nói quá; GET thường vẫn an toàn. Ngoại lệ lịch sử trong đặc tả 301 chỉ nói POST→GET, không ghi hành vi PUT hay DELETE, nên đừng giả định mà không kiểm thử client thật. Điều đặc tả nói rõ là 308 cấm client đổi bất kỳ phương thức nào được lặp lại; quy tắc đó không giới hạn ở POST. Chỉ phương thức được bảo đảm giữ nguyên; header, cookie, thông tin xác thực và toàn bộ giao dịch vẫn phụ thuộc vào client cùng tích hợp, nên phải kiểm thử những luồng quan trọng.
Google có xử lý 301 và 308 khác nhau cho SEO không? Không.
Đây là câu hỏi hiếm hoi về chuyển hướng mà tài liệu, nhân viên Google và Bing đều đồng ý, nhất quán trong nhiều năm.
Tài liệu mã trạng thái HTTP của Google đặt 301 và 308 cùng nhóm. Dòng 301 viết: “Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.” (bản dịch) «Google đi theo chuyển hướng và hệ thống Google dùng nó làm tín hiệu mạnh rằng đích nên được xử lý.» Dòng 308 chỉ có một câu: “Equivalent to 301.” (bản dịch) «Tương đương với 301.» Đây là bằng chứng mạnh và dễ trích dẫn nhất: tài liệu Google đánh đồng hai mã. Evidence for this claim Google treats 308 as equivalent to 301 for Search while advising sites to use the semantically appropriate status code. Scope: Google Search processing; client behavior still differs when method preservation matters. Confidence: high · Verified: Google: HTTP status codes and Search
Hướng dẫn chuyển hướng củng cố điều đó ngay phần mở đầu: “The 301 and 308 status codes mean that a page has permanently moved to a new location” (bản dịch) «Mã trạng thái 301 và 308 có nghĩa trang đã chuyển vĩnh viễn sang vị trí mới», rồi không phân biệt thêm giữa chúng.
Nhân viên Google đã nói điều tương tự không chính thức từ nhiều năm trước khi nó xuất hiện trong tài liệu:
- Gary Illyes (2021): trong một chuỗi thảo luận về việc Google có xử lý 308 như 301 hay không, ông nói Google “just merge[s] that with 301 so we really don’t care.” (bản dịch) «chỉ hợp nhất nó với 301 nên thực sự không quan tâm». Bài của Barry Schwartz gọi đây là thời điểm điều đó trở thành chính thức: “Three years later it was added to the official Google documents that Google treats 308 redirects like 301 redirects — so now it is official.” (bản dịch) «Ba năm sau, tài liệu chính thức của Google bổ sung rằng Google xử lý 308 như 301, nên giờ điều đó đã chính thức.»
- John Mueller (2018): ba năm trước đó, ông nói “If you use it [a 308 redirect] like a 301 we’ll treat it as such.” (bản dịch) «Nếu bạn dùng 308 như 301, chúng tôi sẽ xử lý như vậy.» Lập trường không chính thức của Google đã tồn tại từ lâu trước khi tài liệu bắt kịp.
Tuy nhiên, tài liệu Google có một sắc thái quan trọng — cũng là luận điểm của bài này. Ngay sau khi đánh đồng hai mã, Google thêm: “While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (bản dịch) «Dù Google xử lý các mã này giống nhau, hãy nhớ chúng khác nhau về ngữ nghĩa. Dùng mã phù hợp để các client khác như thiết bị đọc sách điện tử và công cụ tìm kiếm khác có thể hưởng lợi.» Nói cách khác: hãy chọn mã vì tính đúng đắn và khả năng tương tác, không phải SEO, vì SEO không phân biệt.
Bing có xử lý 301 và 308 khác nhau không? Cũng không.
Phần lớn bài viết chỉ nói về Google. Fabrice Canel của Bing trả lời trực tiếp vào tháng 9 năm 2024 khi được hỏi Bing có xử lý 308 vĩnh viễn giống 301 không: “Bing treats 308 redirects the same as 301 redirects.” (bản dịch) «Bing xử lý chuyển hướng 308 giống chuyển hướng 301.» Schwartz lưu ý điều này phù hợp với phát biểu của Google năm 2021.
Vì vậy, cả hai công cụ lớn đều xác nhận: 308 giống 301 về chức năng crawl, lập chỉ mục và hợp nhất tín hiệu. Không công cụ nào coi 308 vượt trội hơn về SEO.
Quan niệm cần bác bỏ: “308 tốt hơn cho SEO / hãy đổi mọi 301”
Tôi nói thẳng vì các trang chất lượng thấp vẫn ám chỉ điều ngược lại: không có lợi ích SEO khi chọn 308 thay 301 cho chuyển hướng thông thường và không có lý do đổi hàng loạt 301 hiện có thành 308. Đây không phải ý kiến cá nhân mà là lập trường đã công bố của công cụ tìm kiếm:
- Tài liệu Google nói 308 “equivalent to
301” (bản dịch) «tương đương với301». - Illyes: “we just merge that with 301.” (bản dịch) «chúng tôi chỉ gộp mã đó chung với 301».
- Canel: Bing “treats 308 redirects the same as 301 redirects” (bản dịch) «xử lý chuyển hướng 308 giống chuyển hướng 301».
Đổi hàng loạt 301→308 không đem lại lợi ích xếp hạng nào và tạo rủi ro cho công cụ cũ hoặc công cụ edge chỉ nhận diện tốt 301/302. Đó chỉ là thay đổi không tạo giá trị.
Nên đối chiếu với một quan niệm sai thực sự từng gây tranh cãi: “301 làm mất hoặc pha loãng PageRank”. Google đã nhiều lần bác bỏ điều đó. Nhưng khác biệt là quan niệm PageRank cần Google sửa lại cách hiểu cũ, còn tính tương đương 301 và 308 được Google, Bing và tài liệu nhất quán cùng khẳng định từ năm 2018. Đây là câu hỏi đã ngã ngũ, không phải tranh luận. Toàn bộ câu chuyện PageRank nằm trong bài so sánh 301 với 302 của cụm này.
Khi 308 là lựa chọn đúng về kỹ thuật
Hãy dùng 308 khi mất phương thức hoặc body yêu cầu sẽ phá chức năng, không phải thứ hạng:
- Endpoint API đang được di chuyển, nơi client gửi
POST/PUT/DELETE. - URL webhook — bên gửi POST một payload không thể để mất.
- Đích action của biểu mẫu — thẻ
<form>gửi dữ liệu phải đến nguyên vẹn tại URL mới. - Luồng POST xác thực hoặc đăng nhập có thông tin xác thực hay token trong body.
Riêng với POST, 301 có nguy cơ khiến client đổi yêu cầu thành GET và bỏ lại body; 308 cấm việc đổi đó. Với PUT/DELETE, RFC không ghi hành vi 301 theo hướng nào, nên đừng giả định; quy tắc giữ phương thức của 308 vẫn áp dụng bất kể phương thức nào.
Trước khi chuyển API, webhook hoặc luồng xác thực, hãy nhớ riêng mã trạng thái không bảo đảm mọi thứ sống sót qua hop; cần kiểm tra trong cùng thay đổi:
- Thông tin xác thực, cookie và header auth. Không mã nào hứa bảo toàn chúng; hãy kiểm thử client thật như trình duyệt, SDK hoặc bên gửi webhook.
- Hành vi khác origin. Chuyển hướng qua origin khác có thể thay đổi dữ liệu trình duyệt hoặc fetch client gửi; xác minh bằng caller thật, không chỉ
curlthủ công. - Tính idempotent và tác dụng phụ lặp. Nếu yêu cầu lặp không idempotent — webhook tạo bản ghi hoặc POST thanh toán — client thử lại sau chuyển hướng có thể kích hoạt hai lần. Xác nhận đích xử lý lặp an toàn trước khi trông chờ 308 “tự hoạt động”.
- Triển khai và hoàn tác với cache trong đầu. Cả phản hồi 301 và 308 đều có thể cache theo suy đoán, nên client hoặc trung gian đã cache phản hồi cũ có thể tiếp tục dùng nó sau khi đổi mã. Hãy kiểm thử bằng client mới và client đã truy cập trước thay đổi; kế hoạch hoàn tác phải tính đến trạng thái cache thay vì giả định việc chuyển đổi có hiệu lực tức thì.
Khi 301 vẫn là mặc định thực dụng
Với mọi thứ là GET thường — tức phần lớn nội dung người làm SEO chuyển hướng — 301 vẫn là lựa chọn hợp lý:
- Thay đổi trang/URL và di chuyển nội dung thông thường.
- Đổi miền và hợp nhất website.
- Di chuyển HTTP → HTTPS.
- Hợp nhất biến thể
www/khôngwwwhoặc có/không dấu gạch chéo cuối.
Vì sao mặc định dùng mã cũ hơn khi 308 “nghiêm ngặt” hơn? Có ba lý do thực tế:
- Được nhận diện rộng hơn. 301 có trước 308 hai thập kỷ và được gần như mọi trình duyệt, proxy, CDN, crawler cùng công cụ phân tích hiện tại lẫn cũ nhận diện. 308 nay đã hơn một thập kỷ và được hỗ trợ rộng, nhưng phần đuôi dài của client cùng công cụ edge cũ vẫn kém chắc chắn; đừng giả định mọi công cụ trong stack nhận diện nó.
- Thực tế công cụ. Nhiều công cụ phổ biến mặc định hoặc chỉ hiển thị rõ 301/302. Plugin WordPress, trình tạo quy tắc Cloudflare và một số nền tảng serverless/CDN thiên về 301/302; vài nền tảng phát 302/307 bất kể cấu hình bạn nghĩ đã đặt. Với chủ site không chuyên kỹ thuật, “nền tảng thực sự hỗ trợ gì” thường là yếu tố quyết định.
- Không có gì để đạt thêm. Vì Google và Bing xử lý hai mã như nhau khi crawl và lập chỉ mục, không có lợi ích khi dùng mã ít phổ biến hơn cho lần di chuyển trang thường.
Quy tắc kinh nghiệm: GET thường → 301; yêu cầu không phải GET cần giữ nguyên → 308.
Cách triển khai từng mã
Cú pháp gần như giống nhau; bạn chỉ đổi con số.
Apache (.htaccess)
# 301 — permanent, for a normal page move
Redirect 301 /old-page /new-page
# 308 — permanent + method-preserving, for an API/form endpoint
RewriteEngine On
RewriteRule ^old-api/(.*)$ /new-api/$1 [R=308,L]nginx
# 301
location = /old-page {
return 301 /new-page;
}
# 308 — preserves POST body to the API
location = /old-api {
return 308 /new-api;
}Một lưu ý áp dụng cho cả hai: một số CDN, nền tảng edge và plugin CMS không tôn trọng cấu hình 308 mà phát 301/302/307. Nếu giữ phương thức thực sự quan trọng, hãy xác minh phản hồi thật đang gửi bằng cách dùng curl và đọc dòng trạng thái thay vì tin cấu hình. Cú pháp chỉ thị cũng thay đổi theo phiên bản máy chủ và framework; hãy kiểm tra tài liệu phiên bản Apache/nginx hiện tại hoặc framework tạo chuyển hướng thay vì giả định ví dụ trên đúng từng byte cho hệ thống của bạn.
Một đòn bẩy quan trọng hơn lựa chọn 301 hay 308: độ dài chuỗi
Dù chọn mã nào, đòn bẩy hiệu suất lớn hơn là giữ chuyển hướng ngắn. Google theo tối đa khoảng 10 hop chuyển hướng trước khi bỏ cuộc; mỗi hop tăng độ trễ và tạo thêm cơ hội thất thoát tín hiệu. Một hop sạch với mã đúng tốt hơn chuỗi nhiều mã “đúng về kỹ thuật”. Hãy chuyển thẳng đến đích cuối.
Vị trí của chủ đề này
301 và 308 là hai mã chuyển hướng vĩnh viễn. Mỗi mã có bài chuyên sâu riêng trong cụm này, bên cạnh mã tạm thời 302, người anh em nghiêm ngặt 307 và mã 3xx khác là 303. Các bài so sánh tạo thành một lưới: 301 với 302 là vĩnh viễn và tạm thời; 302 với 307 là cặp tạm thời lỏng và nghiêm ngặt; 301 với 308 là cặp vĩnh viễn lỏng và nghiêm ngặt. Cũng cần chú ý rủi ro vận hành như chuỗi và vòng lặp chuyển hướng. Để xem toàn bộ phản hồi máy chủ, hãy đọc trung tâm Mã trạng thái HTTP; loại chuyển hướng cũng là một trong các tín hiệu trong bài canonical hóa.
Tóm tắt bằng AI
Phiên bản cô đọng của phần Nâng cao:
- Cả hai đều là chuyển hướng vĩnh viễn; Google và Bing xử lý 308 giống 301. Tài liệu Google gọi 308 là “equivalent to
301” (bản dịch) «tương đương với301»; Illyes nói “we just merge that with 301,” (bản dịch) «chúng tôi chỉ hợp nhất nó với 301»; Canel của Bing xác nhận “Bing treats 308 redirects the same as 301 redirects.” (bản dịch) «Bing coi chuyển hướng 308 và 301 là tương đương». - Ở tầng giao thức, khác biệt cốt lõi là giữ phương thức. 308 theo RFC 7538 năm 2015 bảo đảm client lặp lại cùng phương thức tại URL mới và mang theo body. 301 có từ HTTP/1.0 và mơ hồ riêng về POST→GET; RFC không nói PUT hay DELETE theo hướng nào, nên đừng khái quát cảnh báo đó.
- Lý do 308 tồn tại: RFC 7231 đã có mã tạm thời giữ phương thức là 307 nhưng thiếu bản vĩnh viễn. 308 lấp khoảng trống; quan hệ của nó với 301 giống quan hệ 307 với 302.
- Trong thực tế, khác biệt chỉ quan trọng với yêu cầu không phải GET. GET thường an toàn với 301. Rủi ro nằm ở POST/PUT/DELETE và body yêu cầu trong biểu mẫu, API, webhook hoặc luồng xác thực.
- Dùng 308 khi phải giữ phương thức không phải GET: endpoint API, URL webhook, đích action biểu mẫu và luồng POST đăng nhập.
- Dùng 301 cho mọi trường hợp còn lại: di chuyển trang, đổi miền, HTTPS và www/không www; mã này lâu đời, được nhận diện rộng và hỗ trợ tốt hơn trên CDN/CMS/plugin.
- Quan niệm cần bỏ: 308 không “tốt hơn cho SEO” và không có lý do đổi hàng loạt 301 thành 308. Các công cụ tìm kiếm đã nhất quán nói điều đó từ năm 2018. Chọn mã vì tính đúng đắn và khả năng tương tác, không phải thứ hạng.
- Đòn bẩy lớn hơn lựa chọn mã: giữ chuỗi chuyển hướng ngắn; Google theo khoảng 10 hop. Hãy chuyển thẳng đến URL cuối.
Tài liệu chính thức
Tài liệu nguồn sơ cấp từ công cụ tìm kiếm và đặc tả.
- Mã trạng thái HTTP, lỗi mạng/DNS và Google Tìm kiếm — tài liệu ghi 308 “Equivalent to
301” và lưu ý “khác nhau về ngữ nghĩa nhưng được xử lý giống nhau”. - Chuyển hướng và Google Tìm kiếm — “Mã
301và308nghĩa là trang đã chuyển vĩnh viễn”, cùng cách triển khai phía máy chủ và cảnh báo JavaScript. - Di chuyển site kèm thay đổi URL — vai trò của chuyển hướng vĩnh viễn trong di chuyển; duy trì ít nhất một năm.
- Search Off the Record — “Bàn về chuyển hướng” (John Mueller và Martin Splitt) — tập đề cập rõ 308 và 307 thuộc loại chuyển hướng nào.
Bing / Microsoft
- Di chuyển website với Bing — hướng dẫn di chuyển site của Bing, coi 301 là đủ để báo lần chuyển vĩnh viễn.
Đặc tả / tài liệu tham chiếu
- RFC 7538 — Mã trạng thái HTTP 308 (Permanent Redirect) — đặc tả năm 2015 tạo ra 308 làm chuyển hướng vĩnh viễn giữ phương thức.
- MDN — 308 Permanent Redirect — cách diễn đạt về giữ phương thức/body và so sánh với 301.
Trích dẫn từ nguồn
Các phát biểu chính thức của Google và Bing. Khi trang nguồn hỗ trợ, liên kết sâu sẽ đưa đến đoạn được trích.
Tài liệu Google — 308 tương đương 301
- “Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.” (bản dịch) «Google đi theo chuyển hướng và hệ thống Google dùng nó làm tín hiệu mạnh rằng đích nên được xử lý.» (dòng 301) — Google Search Central. Đi đến trích dẫn
- “Equivalent to
301.” (bản dịch) «Tương đương với301.» (toàn bộ dòng 308) Đi đến trích dẫn - “While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (bản dịch) «Google có thể coi các mã như nhau, nhưng ngữ nghĩa của chúng vẫn khác. Hãy chọn đúng mã để những client khác — chẳng hạn thiết bị đọc sách điện tử hoặc công cụ tìm kiếm khác — nhận được lợi ích.» Đi đến trích dẫn
Tài liệu Google — cả hai mã đều nghĩa là “đã chuyển vĩnh viễn”
- “The
301and308status codes mean that a page has permanently moved to a new location.” (bản dịch) «Mã trạng thái301và308nghĩa là trang đã chuyển vĩnh viễn sang vị trí mới.» Đi đến trích dẫn
Gary Illyes, Google (2021) (qua Search Engine Roundtable) — 308 được hợp nhất với 301
- “we just merge that with 301 so we really don’t care iirc.” (bản dịch) «chúng tôi chỉ hợp nhất nó với 301 nên thực sự không quan tâm, nếu tôi nhớ đúng.» Bài tường thuật
John Mueller, Google (2018) (qua Search Engine Roundtable) — lập trường không chính thức trước đó
- “If you use it [a 308 redirect] like a 301 we’ll treat it as such.” (bản dịch) «Nếu bạn dùng 308 như 301, chúng tôi sẽ xử lý như vậy.» Bài tường thuật
Fabrice Canel, Microsoft Bing (2024) (qua Search Engine Roundtable) — Bing xác nhận tương đương
- “Bing treats 308 redirects the same as 301 redirects.” (bản dịch) «Bing xử lý chuyển hướng 308 giống chuyển hướng 301.» Bài tường thuật
#:~:text= trên tài liệu trực tiếp. Các phát biểu năm 2021 của Illyes, năm 2018 của Mueller và năm 2024 của Canel ban đầu được đăng trên X/Twitter và được dẫn lại qua bài tường thuật cùng thời của Search Engine Roundtable; hãy đối chiếu bản gốc trước khi coi là kết luận cuối cùng. Tập “Bàn về chuyển hướng” của Search Off the Record thảo luận 307/308 nhưng transcript chính thức không được truy xuất cho bài này, nên không có câu nào từ đó được trích trực tiếp. Nên dùng chuyển hướng vĩnh viễn nào: 301 hay 308?
Vì Google và Bing xử lý 301 và 308 giống nhau khi crawl và lập chỉ mục, cây quyết định này hoàn toàn không nói về thứ hạng. Nó chỉ hỏi: yêu cầu có mang phương thức/body cần giữ nguyên không? Trả lời được là bạn đã xong.
301 or 308 — which permanent redirect should I use?
Phiên bản ngắn: GET thường → 301; yêu cầu không phải GET cần giữ nguyên → 308. Đối với SEO, hai mã có thể thay thế nhau, nên câu hỏi về phương thức là yếu tố duy nhất quyết định.
Lưới tính vĩnh viễn × phương thức
Chọn giữa bốn mã chuyển hướng phổ biến theo hai trục. Cách xử lý SEO đi theo trục đầu; hành vi ứng dụng đi theo trục thứ hai.
| Có thể đổi phương thức | Phải giữ phương thức | |
|---|---|---|
| Tạm thời | 302 | 307 |
| Vĩnh viễn | 301 | 308 |
Hãy ra quyết định theo thứ tự sau:
- Lần chuyển có vĩnh viễn không? Nếu không, ở hàng tạm thời. Nếu có, dùng hàng vĩnh viễn để đích là canonical dự định.
- Yêu cầu có thể mang phương thức/body phải tồn tại không?
GETcủa trang thường không cần bảo đảm nghiêm ngặt.POST,PUT,DELETE, webhook, biểu mẫu hoặc lệnh gọi API có thể cần. - Chọn ô. Di chuyển trang vĩnh viễn thông thường →
301. Di chuyển endpoint không phải GET vĩnh viễn →308. - Xác minh phản hồi được phát. Mặc định nền tảng có thể khác mã chọn trong giao diện hoặc framework. Hãy kiểm thử phản hồi và yêu cầu sau chuyển hướng, không chỉ cấu hình.
Lưới cố ý làm câu hỏi SEO trở nên đơn giản: Google và Bing xử lý 301 và 308 giống nhau. Hãy chọn giữa chúng vì tính đúng đắn của HTTP.
So sánh nhanh 301 và 308
| Câu hỏi | 301 Moved Permanently | 308 Permanent Redirect |
|---|---|---|
| Tính vĩnh viễn | Vĩnh viễn | Vĩnh viễn |
| Cách Google/Bing xử lý SEO | Cùng tín hiệu vĩnh viễn | Cùng tín hiệu vĩnh viễn |
| Phương thức/body yêu cầu | Có thể thay đổi, nhất là POST → GET | Phải được giữ nguyên |
| Phù hợp nhất | Trang thường, miền, HTTPS, chuẩn hóa URL | API, webhook, endpoint biểu mẫu/xác thực có yêu cầu không phải GET |
| Lợi thế chính | Công cụ hỗ trợ phổ biến và lâu đời | Bảo đảm nghiêm ngặt về phương thức/body |
| Lý do tệ để chọn | “301 truyền nhiều giá trị SEO hơn” | “308 tăng thứ hạng” |
Quy tắc kinh nghiệm: GET trang vĩnh viễn thông thường → 301; chuyển endpoint vĩnh viễn nơi yêu cầu không phải GET phải đến nguyên vẹn → 308.
Công cụ xác minh chuyển hướng vĩnh viễn
Công cụ miễn phí của Patrick
- Redirect Checker — kiểm tra trạng thái đầu tiên, từng hop và đích cuối. Dùng để phát hiện nền tảng phát
301,302hoặc307khi bạn cấu hình308. - Bulk HTTP Status Code Checker — kiểm tra tối đa 500 URL trang và xuất các mã lẫn lộn hoặc chuỗi trong một đợt di chuyển.
Xác minh việc giữ phương thức khi cần
curlvới phương thức yêu cầu thật và payload thử nghiệm an toàn — xác nhận yêu cầu sau chuyển hướng vẫn làPOST/PUT/DELETEvà đích nhận body. Dùng môi trường staging hoặc endpoint không phá hủy.- Log ứng dụng và gateway — so sánh cách xử lý phương thức/body ở nguồn và đích. Công cụ kiểm tra trạng thái có thể xác minh
308; chỉ hệ thống nhận mới chứng minh yêu cầu đến nguyên vẹn. - Bảng Network trong DevTools của trình duyệt — hữu ích cho luồng biểu mẫu, nhưng cần kiểm thử riêng client API và webhook ngoài trình duyệt vì hành vi client chính là lý do khác biệt này tồn tại.
Tự kiểm tra: 301 và 308
Năm câu hỏi về khác biệt giữa hai chuyển hướng vĩnh viễn và cách công cụ tìm kiếm xử lý chúng. Chọn đáp án cho từng câu rồi kiểm tra kết quả.
Tài nguyên đáng đọc
Bài viết liên quan của tôi
- 11 loại chuyển hướng và tác động SEO (Ahrefs, cùng Joshua Hardwick) — tổng quan đầy đủ về mọi loại chuyển hướng. Dòng 308 nói mã này “giống chuyển hướng 301, ngoại trừ giữ phương thức HTTP của yêu cầu gốc, GET hoặc POST”. Kết luận của tôi cho so sánh này là: “Đối với SEO, chúng giống nhau; nhưng nếu dữ liệu được gửi qua biểu mẫu, bạn không muốn đổi giữa GET và POST.” Bài cũng nêu thứ tự triển khai tôi ưu tiên cho chuyển hướng vĩnh viễn: 308/301 trước, rồi meta/HTTP refresh, cuối cùng là JavaScript.
- Mã trạng thái HTTP và tác động SEO (Ahrefs) — nơi tôi viết 308 “has the same functionality as a 301 redirect, except you can’t switch between POST and GET,” (bản dịch) «có cùng chức năng như 301, ngoại trừ không thể đổi giữa POST và GET», và “308s are treated the same as 301s and consolidate forward.” (bản dịch) «308 được xử lý như 301 và hợp nhất tín hiệu về phía trước».
- Hướng dẫn nhập môn Technical SEO — vị trí của chuyển hướng trong bức tranh lớn.
Bài nói của tôi
- Patrick Stox trên SlideShare và Speaker Deck — các bài nói về technical SEO của tôi, trong đó nhiều bài đề cập chuyển hướng và canonical hóa. Lưu ý thường trực vẫn áp dụng: “Đây là cách tôi hiểu hệ thống; nội dung không thể đầy đủ hoặc chính xác 100%.”
Nguồn chính thức
- Google — Mã trạng thái HTTP và Google Tìm kiếm — 308 “tương đương 301” — cùng hướng dẫn Chuyển hướng.
- RFC 7538 — Mã trạng thái HTTP 308 (Permanent Redirect) — lý do 308 tồn tại.
- MDN — 308 Permanent Redirect — tài liệu về giữ phương thức/body.
Nguồn trong ngành
- Google chính thức xử lý chuyển hướng 308 như 301 (Search Engine Roundtable, 2021) — câu “we just merge that with 301” (bản dịch) «chúng tôi chỉ hợp nhất nó với 301» của Gary Illyes.
- Google có thể xử lý chuyển hướng 308 như 301 (Search Engine Roundtable, 2018) — phát biểu trước đó của John Mueller rằng “chúng tôi sẽ xử lý như vậy”.
- Bing xử lý chuyển hướng 308 giống chuyển hướng 301 (Search Engine Roundtable, 2024) — xác nhận của Fabrice Canel.
- Google bác bỏ quan niệm sai quanh các loại chuyển hướng (Search Engine Journal) — “Dùng loại chuyển hướng đúng về kỹ thuật.”
- 308 Permanent Redirect: ý nghĩa và thời điểm sử dụng (Semrush) — tổng quan chắc chắn để đối chiếu.
- r/TechSEO — cộng đồng gỡ lỗi chuyển hướng và canonical hóa.
Nhật ký thay đổi
Đã cập nhật 22 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 9 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 17 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Try it live
These are real endpoints on this site — not a simulation.
Hit them from the button, open them in a new tab, or
curl -i them from your terminal, and the server answers with the actual status code this article is about.