Chuyển hướng 302

Chuyển hướng tạm thời 302 là gì, cách Google tách tín hiệu crawl khỏi ưu tiên canonical, trường hợp sử dụng đúng, rủi ro khi dùng cho lần chuyển vĩnh viễn và cách xác minh.

Xuất bản lần đầu: 2 thg 7, 2026 · Cập nhật lần cuối: 22 thg 8, 2026 · Advanced
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này

Chuyển hướng 302 (HTTP 302 “Found”) là chuyển hướng tạm thời: nó đưa người dùng đến URL mới nhưng báo URL gốc nên tiếp tục xuất hiện trong kết quả. Google gọi 302 là tín hiệu yếu rằng đích nên được xử lý ở tầng crawl, trong khi quy trình lập chỉ mục không dùng chuyển hướng tạm thời làm tín hiệu chọn đích làm canonical; hai phạm vi này không được trộn lẫn. Google đã nói tín hiệu liên kết trên 302 không bằng 0, nhưng 302 tồn tại lâu có thể dần bị xử lý như 301 mà không có lịch trình công bố. Đây là lựa chọn đúng cho thử nghiệm A/B, định tuyến theo địa lý hoặc thiết bị, trang bảo trì và khuyến mãi tạm thời. Sai lầm thật là dùng 302 cho lần chuyển vĩnh viễn, khiến URL cũ có thể tiếp tục xếp hạng thay URL mới trong thời gian khó đoán.

Tóm tắt — 302 (“Found”) là chuyển hướng tạm thời. Cách diễn đạt chính xác của Google có hai giai đoạn: hạ tầng crawl coi đây là tín hiệu yếu rằng đích nên được xử lý, so với tín hiệu mạnh của 301; riêng quy trình lập chỉ mục Search nói chuyển hướng tạm thời không phải tín hiệu rằng đích nên là canonical, dù đích vẫn có thể được lập chỉ mục nhờ tín hiệu khác. Hai cơ chế thường bị trộn lẫn: truyền tín hiệu liên kết/PageRank — Mueller và Illyes nói mức này không bằng 0 với 302, nhưng đó là phát biểu công khai chứ không phải quy tắc phổ quát được xuất bản chính thức — và ưu tiên canonical hóa/lập chỉ mục, nơi 302 bảo Google giữ URL nguồn trong chỉ mục. Nếu tồn tại đủ lâu, 302 có thể chuyển sang cách xử lý như 301; đây là mẫu được người làm nghề quan sát, không phải cơ chế có tài liệu, và không có lịch trình công bố. Google khuyên dùng 302 thay 301 cho thử nghiệm A/B. Sai lầm thật là dùng 302 cho lần chuyển vĩnh viễn; cũng không bao giờ được tạo đích chuyển hướng từ dữ liệu người dùng chưa kiểm tra.

Từ “Moved Temporarily” đến “Found” — lịch sử ngắn

302 ra đời với sự mơ hồ. Trong HTTP/1.0, nó có tên “Moved Temporarily” và đặc tả nói client nên tái sử dụng phương thức yêu cầu gốc khi theo chuyển hướng. Trong thực tế, trình duyệt không làm vậy; nhiều trình duyệt âm thầm đổi POST thành GET, trái đặc tả. HTTP/1.1 thừa nhận thực tế bằng cách đổi tên 302 thành “Found” và thêm hai lựa chọn rõ ràng: 303 (See Other) luôn đổi sang GET, còn 307 (Temporary Redirect) không bao giờ đổi phương thức. Đặc tả hiện tại RFC 9110 năm 2022 vẫn ghi client có thể đổi POST thành GET khi theo 302; đó chính là lý do 307 tồn tại cho trường hợp không được đổi. Với chuyển hướng trang dùng GET thông thường, 302 và 307 được công cụ tìm kiếm xử lý giống nhau; khác biệt giữ phương thức chỉ quan trọng với biểu mẫu và API. Evidence for this claim RFC 9110 defines 302 Found as a temporary move to another URI and notes that user agents may change POST to GET when following it. Scope: HTTP semantics for 302 responses. Confidence: high · Verified: IETF: RFC 9110 §15.4.3 — 302 Found

Đối với tìm kiếm, Google gom 302 (found), 303 (see other)307 (temporary redirect) vào nhóm “Tạm thời”, đối lập với 301308 ở nhóm “Vĩnh viễn”.

Quyết định ngắn gọn khi chọn giữa các mã:

  • 302 — client theo chuyển hướng có thể đổi POST thành GET theo RFC 9110. Phù hợp với chuyển hướng trang dùng GET; tránh nếu không thể chấp nhận đổi phương thức.
  • 307 — không đổi phương thức hay gửi lại một yêu cầu khác. Dùng khi biểu mẫu hoặc lệnh gọi API phải được phát lại đúng như ban đầu.
  • 303 — cố ý trỏ đến một tài nguyên khác, không tương đương, thường được lấy bằng GET/HEAD. Đây là mẫu “sau POST chuyển đến trang xác nhận”, không phải nội dung thay thế tương đương.
  • Bộ nhớ đệm — riêng mã 302 không cho phép cache theo suy đoán theo RFC 9111; nó chỉ được lưu/tái sử dụng khi có chỉ thị cache hoặc độ mới rõ ràng. Đừng giả định CDN hay trình duyệt sẽ cache 302 trần theo mặc định.

Tín hiệu yếu và tín hiệu mạnh — nguyên văn chính xác của Google

Bỏ qua lời truyền miệng và đọc cách Google thật sự diễn đạt. Trong tài liệu hạ tầng crawl, Google nói 302 là tín hiệu yếu:

“By default, Google’s crawlers follow the redirect, and Google systems use the redirect as a weak signal that the redirect target should be processed.” (bản dịch) «Theo mặc định, crawler Google đi theo chuyển hướng và hệ thống Google dùng chuyển hướng làm tín hiệu yếu rằng đích nên được xử lý.»

Evidence for this claim Google's crawling-infrastructure documentation says crawlers follow a 302/303 and Google systems use it as a weak signal that the target should be processed; it also warns that product behavior can differ. Scope: product-specific crawl and processing handoff Confidence: high · Verified: How HTTP Status Codes Affect Google's Crawlers

Dòng 301 trong cùng bảng giống hệt, chỉ thay một từ thành mạnh:

“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 chuyển hướng làm tín hiệu mạnh rằng đích nên được xử lý.»

Evidence for this claim Google's crawling-infrastructure documentation says crawlers follow a 302/303 and Google systems use it as a weak signal that the target should be processed; it also warns that product behavior can differ. Scope: product-specific crawl and processing handoff Confidence: high · Verified: How HTTP Status Codes Affect Google's Crawlers

“Yếu” không có nghĩa “bằng 0”, nhưng cần nói chính xác thứ gì yếu. Đây là hai hệ thống Google nói về hai giai đoạn khác nhau, không phải một thang liên tục:

  • Hạ tầng crawl — trích dẫn “tín hiệu yếu” ở trên — nói về việc đích chuyển hướng có được xử lý hay không, tức crawler Google có lấy và xem nội dung đích không.
  • Quy trình lập chỉ mục của Search là giai đoạn riêng sau đó và nêu quy tắc trực tiếp: “Googlebot follows the redirect, but the indexing pipeline doesn’t use the redirect as a signal that the redirect target should be canonical. The target page might still be indexed if other canonicalization signals are present.” (bản dịch) «Googlebot đi theo chuyển hướng nhưng quy trình lập chỉ mục không dùng nó làm tín hiệu rằng đích nên là canonical. Trang đích vẫn có thể được lập chỉ mục nếu có tín hiệu canonical hóa khác.» Evidence for this claim Google follows a 302 temporary redirect but does not use it as a signal that the destination should become canonical; Google recommends 302 rather than 301 for temporary site tests. Scope: Google Search handling of temporary redirects and A/B tests. Confidence: high · Verified: Google: Redirects and Google Search Google: Website testing

Đọc cùng nhau: 302 chỉ thúc nhẹ Google xem đích ở giai đoạn crawl, còn quy trình lập chỉ mục Search không coi chuyển hướng đó là lá phiếu chọn đích làm canonical. Đích vẫn có thể được lập chỉ mục và chọn canonical nhờ các tín hiệu khác, không phải nhờ 302. Đừng rút gọn thành “302 là lá phiếu yếu để đích thành canonical”; không tài liệu nào nói vậy vì chúng mô tả phạm vi khác nhau.

Hai cơ chế, không phải một

Đây là nơi phần lớn nội dung cạnh tranh trộn lẫn khái niệm, nên hãy tách riêng:

  1. Tín hiệu liên kết / PageRank không bằng 0 trên 302. Năm 2016, Gary Illyes nói Google không còn pha loãng PageRank qua 301, 302 hay chuyển hướng 30x khác, loại bỏ quan niệm “mất khoảng 15% mỗi hop”. Mueller nói riêng về 302: “do work the same as normal redirects… It’s not that they don’t pass any PageRank or anything like that.” (bản dịch) «hoạt động giống chuyển hướng thông thường; không phải chúng không truyền PageRank». Hãy coi đây là phát biểu công khai của Google, không phải bảo đảm phổ quát được xuất bản chính thức; tài liệu nguồn sơ cấp hiện tại không nêu quy tắc truyền tín hiệu chính xác cho mọi loại chuyển hướng trong mọi tình huống.
  2. Ưu tiên canonical hóa / lập chỉ mục mới là cơ chế thật sự khác. 301 là tín hiệu mạnh để lập chỉ mục đích; 302 là tín hiệu yếu, nên mặc định Google tiếp tục lập chỉ mục nguồn.

“302 có truyền PageRank không?” và “302 có đổi URL xếp hạng không?” là hai câu hỏi khác nhau. Câu đầu là có; câu sau là “không theo mặc định”. Trộn chúng là nguồn gốc của quan niệm “302 = không có equity”.

Liên quan đến điều này, khi chuyển hướng URL, Google theo dõi cả hai đầu: “Google keeps track of both the redirect source (the old URL) and the redirect target (the new URL). One of the URLs will be the canonical; which one, depends on signals such as whether the redirect was temporary or permanent. The other URL becomes an alternate name of the canonical URL.” (bản dịch) «Google theo dõi cả nguồn và đích chuyển hướng. Một URL sẽ là canonical tùy vào tín hiệu như chuyển hướng tạm thời hay vĩnh viễn; URL kia trở thành tên thay thế của canonical.» Với 302, nguồn vẫn là canonical — ít nhất vào lúc này. Evidence for this claim A 302 expresses temporary intent, but it does not guarantee that the source URL will always remain Google's selected canonical or that the target cannot index through other signals. Scope: redirect crawling, indexing, and canonicalization Confidence: high · Verified: Redirects and Google Search

Điều xảy ra khi 302 tồn tại quá lâu — “lật”

Điều khiến nhiều người bất ngờ là chuyển hướng tạm thời không được gỡ có thể ngừng bị xử lý như tạm thời. Mueller nói: “if you have 302 redirects for the long run, we treat them exactly the same as 301 redirects anyway.” (bản dịch) «nếu duy trì 302 lâu dài, cuối cùng chúng tôi xử lý chúng giống hệt 301».

Vì sao? Đây là cách giải thích làm việc của tôi từ hướng dẫn canonical hóa trên Ahrefs — mô hình tinh thần của người làm nghề dựa trên hành vi quan sát, không phải cơ chế Google công bố. Hãy hình dung một chiếc cân: chuyển hướng vĩnh viễn gửi tín hiệu về phía trước đến URL mới, còn chuyển hướng tạm thời gửi tín hiệu về phía sau đến URL gốc. Nhưng:

“If a temporary redirect is left in place long enough or the URL it’s redirected to already exists, it may be treated as a permanent redirect and send signals forward instead. It requires enough signals to flip the scale we saw earlier for canonicalization signals. As links build up, internal links are changed, sitemap URLs are updated, etc., more signals point to the new URL than the old URL, and the flip occurs.” (bản dịch) «Nếu chuyển hướng tạm thời tồn tại đủ lâu hoặc URL đích đã tồn tại, nó có thể bị xử lý như vĩnh viễn và gửi tín hiệu về phía trước. Khi liên kết tích lũy, liên kết nội bộ thay đổi, URL sitemap được cập nhật và nhiều tín hiệu trỏ đến URL mới hơn URL cũ, chiếc cân sẽ lật.»

Điểm khó là không ai biết mất bao lâu. Trong hướng dẫn chuyển hướng, tôi viết: “Nobody knows how long a 302 redirect has to exist before Google starts treating it as a 301 redirect. Usually, it’s a few weeks to a few months, but it can be days, weeks, or months.” (bản dịch) «Không ai biết 302 phải tồn tại bao lâu trước khi Google xử lý như 301. Thường là vài tuần đến vài tháng, nhưng có thể là vài ngày, vài tuần hoặc vài tháng.» Google có thể hành động sớm hơn nếu cho rằng bạn dùng nhầm: “Only if Google thinks you used a 302 redirect by mistake for a permanent move does this not happen. In that case, it treats the redirect as a 301… In some circumstances, Google even appears to treat 302s as 301s from the get-go.” (bản dịch) «Nếu Google cho rằng bạn nhầm dùng 302 cho lần chuyển vĩnh viễn, nó sẽ xử lý như 301; trong vài trường hợp, Google dường như coi 302 là 301 ngay từ đầu.» Đừng nêu số ngày cụ thể vì không có mốc được công bố; con số “hai ngày” trong lời truyền miệng về Bing cũng không được Google xác nhận.

Bing xử lý 302 thế nào — theo dõi hành vi, không chỉ header

Bing đi đến kết quả tương tự bằng con đường hơi khác. Trong bài giải thích lâu năm, Bing nói theo dõi mẫu hành vi quan sát được qua nhiều lần crawl thay vì chỉ tin mã trạng thái: chuyển hướng liên tục đổi đích bị xử lý giống 302 hơn dù gắn nhãn 301; chuyển hướng luôn đến cùng nơi bị xử lý giống 301 hơn dù gắn nhãn 302. Hệ thống Bing bắt đầu “think about them more like 301s as we continue to crawl them again and again” (bản dịch) «nghĩ về chúng giống 301 hơn khi tiếp tục crawl lặp lại». Đây là cùng sự hội tụ Google mô tả: qua đủ thời gian nhất quán, cả hai công cụ tin hành vi chuyển hướng hơn nhãn header.

Hướng dẫn cũ của Bing cũng nhấn mạnh “chỉ dùng 302 có chừng mực” hơn Google hiện nay, cảnh báo dùng sai 302 có thể để giá trị mắc lại ở URL gốc. Kết luận thực tế vẫn giống Google: hãy khớp loại chuyển hướng với ý định thật.

Khi 302 là lựa chọn đúng

Google không chỉ chấp nhận 302; với một trường hợp, Google còn khuyến nghị mã này. Từ hướng dẫn thử nghiệm A/B:

“If you’re running a test that redirects users from the original URL to a variation URL, use a 302 (temporary) redirect, not a 301 (permanent) redirect. This tells search engines that this redirect is temporary—it will only be in place as long as you’re running the experiment—and that they should keep the original URL in their index rather than replacing it with the target of the redirect (the test page). JavaScript-based redirects are also fine.” (bản dịch) «Nếu thử nghiệm chuyển người dùng từ URL gốc sang URL biến thể, hãy dùng 302 tạm thời, không dùng 301 vĩnh viễn. Điều này báo chuyển hướng chỉ tồn tại trong thời gian thử nghiệm và công cụ tìm kiếm nên giữ URL gốc trong chỉ mục thay vì thay bằng trang thử nghiệm. Chuyển hướng JavaScript cũng được chấp nhận.»

Các tình huống phù hợp đều thực sự tạm thời:

  • Thử nghiệm A/B — khuyến nghị rõ của Google ở trên. Nhưng đừng kéo dài không cần thiết; Google cảnh báo “if we discover a site running an experiment for an unnecessarily long time, we may interpret this as an attempt to deceive search engines and take action accordingly.” (bản dịch) «nếu phát hiện site chạy thử nghiệm lâu không cần thiết, chúng tôi có thể coi đó là ý định đánh lừa công cụ tìm kiếm và có hành động». Chạy đủ lâu để đạt ý nghĩa thống kê rồi gỡ.
  • Định tuyến theo địa lý, thiết bị và ngôn ngữ — nơi đích “đúng” phụ thuộc khách truy cập và không URL nào nên thay nguồn vĩnh viễn. Nhưng chọn mã chưa đủ: xác nhận Googlebot được đưa đến đâu, quy tắc có dựa vào cookie/header crawler không gửi không, khóa cache và header Vary có tách đúng biến thể không, người dùng screen reader hoặc không JavaScript có truy cập được không, và khách có thể ghi đè định tuyến để tránh vòng lặp không. Kết hợp hreflang đúng trên các bản địa hóa; chuyển hướng và hreflang phải đồng thuận.
  • Trang bảo trì hoặc dịch vụ tạm ngừng — Google nêu: “if a service your site offers is temporarily unavailable, you can set up a temporary redirect to send users to a page that explains what’s happening, without compromising the original URL in search results.” (bản dịch) «nếu dịch vụ tạm thời không khả dụng, có thể đặt chuyển hướng tạm thời đến trang giải thích mà không ảnh hưởng URL gốc trong kết quả». Nếu chính URL tạm không phục vụ được do backend lỗi hoặc đang triển khai, 503 Service Unavailable kèm Retry-After trên cùng URL thường chính xác hơn. Dùng 302 khi cố ý đưa khách đến một URL giải thích khác thực sự hữu ích.
  • Khuyến mãi giới hạn thời gian — đưa khách đến trang chiến dịch trong thời gian chạy rồi hoàn tác.
  • Cân bằng tải hoặc failover — tạm định tuyến lưu lượng sang nơi khác khi origin hay data center không khả dụng.

Xem thẻ Ví dụ để đối chiếu các trường hợp có chú thích và thẻ Danh sách kiểm tra để rà soát trước phát hành.

Sai lầm thực sự

Dùng 302 khi bạn định chuyển vĩnh viễn. Bạn đang bảo Google giữ URL cũ trong chỉ mục, nên trang mới mà bạn muốn xếp hạng có thể chưa thay thế nó trong một khoảng thời gian dài, không thể dự đoán — tổn thất hiển thị thật chứ không phải lý thuyết. Nếu trang biến mất vĩnh viễn, dùng 301 hoặc 308. Các lỗi liên quan là trộn 301 và 302 thiếu nhất quán trong chuỗi, hoặc trỏ hai URL vào nhau tạo vòng lặp.

Triển khai 302

Header mới là phần quan trọng: dòng trạng thái 302 Found cùng Location. Ví dụ PHP của Google:

header('HTTP/1.1 302 Found');
header('Location: https://www.example.com/newurl');
exit();

Apache (.htaccess) — cờ R=302 làm chuyển hướng tạm thời; R=301 hoặc R trần mặc định là vĩnh viễn:

Redirect 302 /old-path https://www.example.com/newurl
# or with mod_rewrite:
RewriteRule ^old-path/?$ https://www.example.com/newurl [R=302,L]

nginx — redirect phát 302, còn permanent phát 301:

location = /old-path {
    return 302 https://www.example.com/newurl;
}

Bất kể stack là plugin WordPress, quy tắc CDN/edge hay handler ứng dụng, quy tắc giống nhau: ưu tiên chuyển hướng phía máy chủ và phải chủ động chọn mã tạm thời. Phần lớn công cụ mặc định 301, nên 302 thường là thiết lập rõ ràng.

Một lưu ý bảo mật áp dụng cho mọi chuyển hướng: nếu đích trong header Location được tạo từ dữ liệu người dùng như tham số ?next= hay ?returnUrl=, bạn có đủ thành phần cho open redirect. Kẻ tấn công tạo liên kết trên miền của bạn nhưng đẩy khách đến nơi độc hại. Đừng chuyển đến bất kỳ URL nào xuất hiện trong tham số; hãy allowlist tập đường dẫn hoặc origin an toàn cố định. Kiểm thử dữ liệu mã hóa và dạng tương đối theo scheme như //evil.example, %2F%2Fevil.example trước khi phát hành. Đối chiếu cú pháp ví dụ với phiên bản nền tảng hiện tại; các đoạn trên chỉ minh họa và không thay thế kiểm thử trên máy chủ/CDN thật.

Để xem trường hợp chuyển vĩnh viễn và so sánh đầy đủ, hãy đọc các bài liên quan về chuyển hướng 301, 301 với 302 và 302 với 307 trong cụm này.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.