301 Chuyển hướng

Chuyển hướng vĩnh viễn 301 là gì, vì sao Google nói mã này không làm mất PageRank, nên duy trì bao lâu, cách triển khai trên Apache, nginx, WordPress và Cloudflare, cùng những chuyển hướng 301 giả làm thất thoát tín hiệu.

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 301 là mã trạng thái HTTP cho một lần chuyển vĩnh viễn. Đây là cách mạnh và đơn giản để đưa người dùng cùng bot từ URL cũ sang URL mới và hợp nhất tín hiệu xếp hạng tại đích. Google nói rõ chuyển hướng vĩnh viễn không làm mất PageRank; đừng dùng tỷ lệ phần trăm truyền link equity vì Google không công bố con số. Hãy dùng chuyển hướng 301 thật phía máy chủ, ánh xạ URL cũ đến nội dung thay thế phù hợp theo tỷ lệ 1:1 thay vì dồn về trang chủ và tạo soft 404, giữ chuỗi ngắn, đồng thời trả về 404 khi không có nội dung thay thế. Duy trì chuyển hướng ít nhất khoảng một năm; quy tắc máy chủ có hiệu lực tức thì nhưng việc hợp nhất chỉ mục và tín hiệu cần nhiều tuần đến khoảng một năm.

Tóm tắt — 301 (HTTP “301 Moved Permanently”) là phản hồi phía máy chủ chuyển URL vĩnh viễn và là tín hiệu mạnh nhất để hợp nhất xếp hạng tại đích. Google nói rõ chuyển hướng vĩnh viễn không làm mất PageRank; quy tắc “mất khoảng 15% mỗi hop” đã lỗi thời và không có tỷ lệ link equity được công bố, nên đừng tự đặt con số. Hãy triển khai trên máy chủ (Apache, nginx, mã ứng dụng) hoặc tại edge (Cloudflare), không dùng JavaScript hay meta refresh trì hoãn. Trỏ URL cũ đến nội dung tương đương phù hợp theo tỷ lệ 1:1 thay vì dồn hết về trang chủ, điều có thể bị Google phân loại lại thành soft 404. Giữ chuỗi ngắn: Google có thể theo tối đa 10 hop nhưng khuyên dưới khoảng 5; Mueller từng nói khoảng 5 mỗi lần crawl. Quy tắc máy chủ có hiệu lực tức thì; hợp nhất đầy đủ chỉ mục và tín hiệu cần nhiều tuần đến thường ít nhất một năm.

Bản chất của chuyển hướng 301

A 301 doesn't just forward visitors — it consolidates a page's signals onto its new home. Nguồn: /technical-seo/http-status-codes/redirects/301-redirect/

© Patrick Stox LLC · CC BY 4.0 ·

301 là mã trạng thái HTTP — “301 Moved Permanently” — do máy chủ hoặc edge của CDN trả trong header trước bất kỳ thân trang nào. Đây là điểm quan trọng: 301 thật xảy ra ở tầng giao thức, trong phản hồi cho yêu cầu. Nó không phải tính năng plugin, thẻ <meta> hay đoạn JavaScript; những cách đó chỉ là giải pháp thay thế khi không thể cấu hình máy chủ và có hành vi khác.

Google định nghĩa ngắn gọn: “The 301 and 308 status codes mean that a page has permanently moved to a new location.” (bản dịch) «Các mã 301 và 308 nghĩa là trang đã chuyển vĩnh viễn sang vị trí mới.» (308 là mã chuyển hướng vĩnh viễn mới hơn, đồng thời giữ nguyên phương thức yêu cầu; với SEO, Google xử lý 301 và 308 giống nhau — “use HTTP permanent redirects if possible, such as 301 and 308.” (bản dịch) «hãy dùng chuyển hướng HTTP vĩnh viễn như 301 và 308 nếu có thể».) Evidence for this claim RFC 9110 defines 301 Moved Permanently as meaning the target resource has a new permanent URI and future references ought to use one of the enclosed URIs. Scope: HTTP semantics for 301 responses; user agents may change POST to GET for historical reasons. Confidence: high · Verified: IETF: RFC 9110 §15.4.2 — 301 Moved Permanently

Có vài chi tiết giao thức cần biết trước khi triển khai. Theo mặc định, phản hồi 301 có thể được lưu đệm theo suy đoán, nên trình duyệt hoặc cache trung gian có thể giữ quy tắc; vì vậy một chuyển hướng đã “sửa” vẫn có thể đưa người kiểm thử đến đích cũ cho tới khi cache được xóa. Do 301 tồn tại từ HTTP/1.0, user agent được phép đổi yêu cầu POST thành GET khi đi theo; đừng giả định 301 giữ nguyên phương thức của biểu mẫu, hãy dùng 308 nếu điều đó quan trọng. Header Location chỉ cần là một URI reference và về kỹ thuật có thể là đường dẫn tương đối, nhưng URL tuyệt đối giúp tránh mơ hồ.

Cách Google xử lý 301: canonical hóa và lập chỉ mục

Chuyển hướng vĩnh viễn là một trong những tín hiệu canonical hóa mạnh nhất của Google. Khi Googlebot theo 301, quy trình lập chỉ mục dùng chuyển hướng làm tín hiệu rằng đích nên là URL canonical. Google ghi nhận cả hai đầu: “When you redirect a URL, 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… The other URL becomes an alternate name of the canonical URL.” (bản dịch) «Khi chuyển hướng URL, Google theo dõi cả nguồn chuyển hướng (URL cũ) và đích chuyển hướng (URL mới). Một URL sẽ là canonical; URL còn lại trở thành tên thay thế của URL canonical.» Evidence for this claim Google treats 301 and 308 as permanent redirects and uses a permanent redirect as a strong signal that the target should be canonical. Scope: Google Search redirect and canonicalization behavior; a redirect remains one signal among others. Confidence: high · Verified: Google: Redirects and Google Search

Đó là lý do đôi khi URL cũ vẫn xuất hiện trong kết quả một thời gian sau khi chuyển: Google giữ nó như “tên thay thế”. Google nói không cần hoảng: với việc đổi miền, “it’s very likely that Google will continue to occasionally show the old URLs in the results, even though the new URLs are already indexed. This is normal… the alternate names will fade away without you doing anything.” (bản dịch) «Google rất có thể vẫn thỉnh thoảng hiển thị URL cũ dù URL mới đã được lập chỉ mục. Đây là điều bình thường; các tên thay thế sẽ tự mờ dần.»

Chuyển hướng có trọng số cao hơn các tín hiệu canonical hóa yếu hơn. Gary Illyes từng mô tả thứ bậc rất thẳng: chuyển hướng “should be much higher weight… than whether the page is on an http URL or https.” (bản dịch) «nên có trọng số cao hơn nhiều so với việc trang nằm trên URL HTTP hay HTTPS». Vì vậy, một 301 ngoài ý muốn có thể âm thầm lấn át thẻ canonical hoặc ưu tiên HTTPS chỉ theo hướng ngược lại. Xem bài canonicalization để biết đầy đủ.

Cần nói chính xác tín hiệu này làm được gì và không hứa điều gì. 301 là tín hiệu mạnh về đích canonical, không phải bảo đảm. Nó cho Google biết URL nào nên là canonical; không bảo đảm URL đó được lập chỉ mục, xếp hạng, nhận lưu lượng hay tự động nhận mọi tín hiệu khác như liên kết, chất lượng nội dung và thẩm quyền site. Hãy tách “lựa chọn canonical” khỏi “kết quả lập chỉ mục, xếp hạng và lưu lượng”; 301 chỉ trực tiếp trả lời câu hỏi đầu tiên.

Quan niệm sai về PageRank — cần hiểu thật chính xác

Đây là sự thật về 301 bị bóp méo nhiều nhất, nên cần dùng phiên bản chính xác.

Phát biểu chính xác của Google: “301 and other permanent redirects don’t cause a loss in PageRank.” (bản dịch) «301 và các chuyển hướng vĩnh viễn khác không làm mất PageRank.» Chỉ vậy thôi. Không phải “giữ 85%” hay “mất 10–15% mỗi hop”. Không có tổn thất.

Quy tắc “mất khoảng 15% mỗi hop” bắt nguồn từ phát biểu cũ trước năm 2016 về suy giảm PageRank qua chuyển hướng, thường được gán cho Matt Cutts. Google đã thay đổi công khai khoảng năm 2016; theo các báo cáo lúc đó, Google ngừng pha loãng PageRank qua chuyển hướng 30x và đích nhận thẩm quyền.

Hệ quả theo hướng ngược lại cũng dễ gây nhầm: đừng nói 301 “truyền 90–99% link equity”. Google không công bố con số như vậy. “Không làm mất PageRank” là phát biểu định hướng, không phải tỷ lệ; mọi phần trăm cụ thể đều là truyền miệng, chưa từng được Google xác nhận. Hãy trích dẫn cách diễn đạt “không mất”, đừng bịa con số.

Tôi bổ sung một cảnh báo từ thử nghiệm thực tế. Tôi từng kiểm tra tuyên bố “tín hiệu vẫn giữ sau một năm” bằng cách gỡ 301 khỏi bốn bài Ahrefs có nhiều liên kết và theo dõi kết quả (Có thể gỡ chuyển hướng 301 sau một năm không? Chúng tôi đã thử nghiệm). Số miền giới thiệu giảm rõ sau khi gỡ, còn lưu lượng tự nhiên cho kết quả hỗn hợp: một bài tăng, một bài giảm, hai bài gần như không đổi; một mức “giảm” thực ra xuất hiện trước khi gỡ. Kết luận trung thực của tôi là: “I’m not willing to conclusively say that permanent redirects pass value even after one year, but what Gary said seems to mostly hold true.” (bản dịch) «Tôi chưa sẵn sàng kết luận chắc chắn rằng chuyển hướng vĩnh viễn vẫn truyền giá trị sau một năm, nhưng điều Gary nói có vẻ phần lớn đúng.» Mẫu nhỏ nên cần dè dặt; kết luận thực dụng vẫn rất đơn giản: đừng gỡ chuyển hướng.

Thời gian — ba chiếc đồng hồ khác nhau

A 301 has three different clocks: server, index, and full signal consolidation. Nguồn: /technical-seo/http-status-codes/redirects/301-redirect/

© Patrick Stox LLC · CC BY 4.0 ·

Câu hỏi “301 mất bao lâu để hoạt động?” phụ thuộc bạn đang nói đến chiếc đồng hồ nào:

  • Máy chủ: tức thì. Ngay khi quy tắc hoạt động, mọi yêu cầu nhận 301 và người dùng đến URL mới. Không phải chờ.
  • Chỉ mục: vài ngày đến vài tuần. Google phải crawl lại URL cũ, thấy chuyển hướng và xử lý đích. Google nói “a small to medium-sized website can take a few weeks for most pages to move, and larger sites take longer,” (bản dịch) «website nhỏ đến vừa có thể mất vài tuần để phần lớn trang chuyển, site lớn mất lâu hơn»; đồng thời “visibility of your content in Search may fluctuate temporarily during the move. This is normal.” (bản dịch) «khả năng hiển thị trong Search có thể tạm thời dao động trong quá trình chuyển; đây là bình thường».
  • Hợp nhất toàn bộ tín hiệu: thường ít nhất một năm. Google nói “Keep the redirects for as long as possible, generally at least 1 year. This timeframe allows Google to transfer all signals to the new URLs… From users’ perspective, consider keeping redirects indefinitely.” (bản dịch) «Nên duy trì các chuyển hướng lâu nhất có thể — thông thường không dưới một năm — để Google chuyển mọi tín hiệu sang URL mới; về phía người dùng, có thể giữ chúng vô thời hạn.» Đây là cùng mốc một năm Illyes đưa ra khi nói tín hiệu cần khoảng một năm để truyền đầy đủ từ nguồn đến đích.

Quy tắc thực hành: giữ 301 ít nhất một năm và, nếu URL không gây chi phí đáng kể, hãy duy trì vô thời hạn.

Triển khai chuyển hướng 301

Hãy thực hiện càng gần máy chủ càng tốt. Bốn hướng dưới đây bao phủ gần như mọi trường hợp. Đây là ví dụ minh họa; cần điều chỉnh đường dẫn và hostname cho hệ thống của bạn. Thẻ Scripts có phiên bản sao chép cùng cách kiểm thử.

Hãy sao lưu cấu hình .htaccess hoặc nginx trước khi chỉnh sửa. Một quy tắc sai có thể khiến toàn bộ website ngừng hoạt động, không chỉ URL cần chuyển hướng.

Apache (.htaccess)

Với một URL đơn lẻ bằng mod_alias:

Redirect permanent "/old-page" "https://example.com/new-page"

Với quy tắc theo mẫu bằng mod_rewrite:

RewriteEngine on
RewriteRule "^/service$" "/about/service" [R=301,L]

nginx

location = /service {
  return 301 https://example.com/about/service;
}

WordPress

WordPress không có trình quản lý chuyển hướng tích hợp sẵn, vì vậy bạn cần thêm một công cụ:

  • Plugin Redirection (miễn phí) — lựa chọn phổ biến nhất; thêm nguồn → đích trong giao diện mà không cần viết mã.
  • Yoast SEO Premium — Redirect Manager có thể tự tạo chuyển hướng khi bạn xóa hoặc đổi slug URL. Bản Yoast miễn phí không có trình quản lý chuyển hướng, dù nhiều hướng dẫn bỏ qua điều này.
  • Cấp máy chủ — nếu có thể chỉnh .htaccess hoặc nginx trực tiếp, quy tắc máy chủ nhanh hơn plugin chạy bằng PHP trên mọi yêu cầu.

Cloudflare

Nếu dùng Cloudflare, bạn có thể chuyển hướng tại edge trước khi yêu cầu đến origin:

  • Single Redirects — quy tắc riêng lẻ trong dashboard.
  • Bulk Redirects — một danh sách chuyển hướng gồm hàng nghìn cặp nguồn → đích áp dụng cho toàn tài khoản. Tính năng này hữu ích cho đợt di chuyển lớn vì không cần chạm vào cấu hình origin, đặc biệt khi máy chủ cũ sắp ngừng hoạt động.

Mã ứng dụng — ví dụ PHP

header('HTTP/1.1 301 Moved Permanently');
header('Location: https://www.example.com/new-url');
exit();

301 “giả” — kiểu thất bại ít người kiểm tra

Một điều trái trực giác cần nhớ: URL có thể trả 200 OK nhưng vẫn chuyển hướng. Trong bài 11 loại chuyển hướng và tác động SEO, tôi viết: “A redirect can still be happening with any status code. You may have a page that shows as a 200 OK status code, but still actually be redirecting” (bản dịch) «Chuyển hướng vẫn có thể xảy ra với bất kỳ mã trạng thái nào. Trang có thể hiển thị 200 OK nhưng thực tế vẫn đang chuyển hướng» — qua JavaScript sau khi tải trang. Chuyển hướng đó vô hình với phép kiểm tra mã trạng thái nhanh và không có các bảo đảm của 301.

Hướng dẫn của Google xếp thứ tự các phương pháp:

  • Phía máy chủ (301/308): tốt nhất. Dùng bất cứ khi nào khả thi về kỹ thuật.
  • Meta refresh: phụ thuộc thời điểm. Google hiểu meta refresh tức thì là chuyển hướng vĩnh viễn; meta refresh trì hoãn sau N giây là tạm thời. Vì vậy, refresh content="5;url=…" không thay thế được 301.
  • JavaScript: giải pháp cuối. Google nói: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects… if you set a JavaScript redirect, Google might never see it if rendering of the content failed.” (bản dịch) «Chỉ dùng chuyển hướng JavaScript khi không thể dùng phía máy chủ hay meta refresh; nếu kết xuất nội dung thất bại, Google có thể không bao giờ thấy chuyển hướng.»
  • Chuyển hướng giả kiểu “crypto” hoặc chỉ có liên kết: không dùng. Trang chỉ liên kết đến URL mới mà không có mã trạng thái hay refresh là thứ mà, theo Google, “not all search engines may recognize… as an official redirect.” (bản dịch) «không phải công cụ tìm kiếm nào cũng nhận ra là chuyển hướng chính thức».

Bài học là: nếu SEO quan trọng, hãy xác nhận chuyển hướng là 301 thật phía máy chủ, không phải trang 200 đổi địa chỉ trong trình duyệt. Thẻ Scripts chỉ cách kiểm tra bằng curl.

Những lỗi 301 phổ biến

  • Chuyển mọi URL đến trang chủ. Sai lầm kinh điển. Google nói: “Don’t redirect many old URLs to one irrelevant single URL destination, such as the home page… This can confuse users and might be treated as a soft 404 error.” (bản dịch) «Đừng chuyển nhiều URL cũ đến một đích không liên quan như trang chủ; điều này gây nhầm lẫn và có thể bị xử lý như soft 404.» Hãy chuyển đến nội dung thay thế liên quan. Nếu thực sự hợp nhất nhiều trang thành một trang kết hợp mới, việc chuyển tất cả đến trang đó vẫn phù hợp.
  • Chuỗi chuyển hướng dài. Google theo được “up to 10 hops” (bản dịch) «tối đa 10 hop» nhưng khuyên đi thẳng đến đích cuối, “ideally no more than 3 and fewer than 5.” (bản dịch) «lý tưởng không quá 3 và dưới 5». Mueller nói Google theo khoảng 5 hop mỗi lần crawl với URL được crawl thường xuyên. Ngưỡng thực hành của tôi tương tự: dưới khoảng 5 thường không đáng lo, nhưng trên 5 dễ phát sinh vấn đề và làm tăng độ trễ. Khi thêm chuyển hướng mới, hãy cập nhật quy tắc cũ để trỏ đến URL cuối cùng.
  • Dùng 302 khi cần 301. Mã 302 yêu cầu Google giữ URL gốc làm canonical, nên lần chuyển vĩnh viễn dùng 302 có thể để URL sai trong chỉ mục. Google có thể diễn giải lại 302 tồn tại lâu thành vĩnh viễn, nhưng thời gian không được xác định — thường từ vài tuần đến vài tháng. Hãy dùng mã đúng với mục đích.
  • Gỡ chuyển hướng quá sớm. Dưới một năm có thể để giá trị mắc ở URL chết. Giữ ít nhất một năm, lý tưởng là vô thời hạn.
  • Quy tắc wildcard quá rộng. Quy tắc bao trùm thư mục thường đưa URL đến sai nơi. Ánh xạ cũ → mới theo tỷ lệ 1:1 nhiều nhất có thể.
  • Quên tài sản không phải HTML. Khi di chuyển, hãy chuyển cả hình ảnh và PDF; không cần chuyển tệp JS/CSS/font.
  • Tắt host cũ quá sớm. Quy tắc không cứu được yêu cầu chưa từng đến máy chủ. Nếu ngừng DNS của miền cũ, để chứng chỉ TLS hết hạn hoặc tắt máy chủ trước khi chuyển hướng hoàn thành nhiệm vụ, người dùng và bot nhận lỗi kết nối thay vì 301. Hãy duy trì DNS, chứng chỉ và quy tắc của host cũ lâu bằng thời gian giữ chuyển hướng.

Bing

Bing xem 301 là tín hiệu mạnh để hợp nhất xếp hạng tại URL đích và cũng khuyên duy trì chuyển hướng lâu dài. Tuy nhiên, mọi mốc thời gian cụ thể cần được kiểm tra lại trực tiếp với tài liệu Bing hiện hành trước khi coi là chính sách chính thức.

Evidence for this claim Google treats 301 and 308 as permanent redirects and uses a permanent redirect as a strong signal that the target should be canonical. Scope: Google Search redirect and canonicalization behavior; a redirect remains one signal among others. Confidence: high · Verified: Google: Redirects and Google Search

Vị trí của mã này trong hệ thống

301 là một mã trong cả họ trạng thái. Nó liên quan trực tiếp nhất đến chuyển hướng 302 (bản tạm thời) — quyết định 301 hay 302 thực chất là “lần chuyển này vĩnh viễn hay tạm thời?”. Nó cũng gần với canonical hóa: 301 là tín hiệu canonical mạnh khi di chuyển trang, không phải để hợp nhất các bản trùng lặp vẫn cùng tồn tại; trường hợp đó cần dùng rel="canonical". Đây còn là nền tảng của mọi đợt di chuyển website. Với nhóm mã rộng hơn — 302/307 là tạm thời, 308 là vĩnh viễn, 404/410 là không còn và 5xx là lỗi — hãy xem cụm mã trạng thái HTTP chứa bài 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.