Meta Refresh Chuyển hướng
Điều gì một meta refresh chuyển hướng là, vì sao điều này sits giữa máy chủ-side và JavaScript các chuyển hướng trong Google order of preference, instant versus delayed refreshes, và vì sao điều này là discouraged.
Ngôn ngữ
MỘT meta refresh chuyển hướng là an HTML <meta http-equiv="refresh"> tag (hoặc đó tương đương HTTP Refresh header) — không an HTTP mã trạng thái. Đó máy chủ trả về một thông thường 200 và đó trình duyệt chỉ acts on đó chuyển hướng khi đó trang là treated as loaded, theo đó HTML Tiêu chuẩn, mà là chính xác vì sao đây là weaker hơn một máy chủ-side chuyển hướng. An instant một (nội dung="0") là đọc by Google as vĩnh viễn, như một 301; một delayed một (nội dung greater hơn 0) as tạm thời, và delay là đó trait tied để old doorway-trang spam. John Mueller says điều này 'nên chỉ hoạt động' nhưng không được khuyến nghị cho hai reasons: điều này giữ đó trang trong trình duyệt history 'afaik' (his words), và Google có để load và parse đó trang trước điều này có thể ngay cả see đó chuyển hướng. Dùng điều này chỉ as một cuối cùng resort khi bạn genuinely có không máy chủ access, ưu tiên đó 0-second version, và đổi trong một real 301 đó moment bạn có thể.
TL;DR — MỘT meta refresh chuyển hướng là một line of HTML — một
Evidence for this claim Google supports instant and delayed meta refresh redirects but recommends server-side permanent redirects when possible. Scope: Google redirect processing and implementation preference. Confidence: high · Verified: Google Search Central: Redirects Evidence for this claim Timed redirects can create accessibility problems, particularly when users cannot control the time limit. Scope: WCAG timing guidance; not a search-ranking claim. Confidence: high · Verified: W3C WCAG: Timing Adjustable<meta http-equiv="refresh">tag — đó tells đó trình duyệt để jump để một sản phẩm khác URL sau đó trang loads. Điều này là không an HTTP mã trạng thái như một 301. Máy chủ của bạn trả về một thông thường trang đầu tiên, thì đó trình duyệt làm đó chuyển hướng. Điều này hoạt động, nhưng đây là chậm hơn và clumsier hơn một real máy chủ-side chuyển hướng, so dùng điều này chỉ khi bạn có không other option.
Điều gì một meta refresh chuyển hướng là
Hầu hết các chuyển hướng happen on đó máy chủ. Bạn ask cho một URL, và trước khi bạn nhận bất kỳ
trang tại all, đó máy chủ các câu trả lời “that moved — go here instead” (bản dịch) «đó moved — go ở đây thay vì» (đó là một 301 hoặc một
302). MỘT meta refresh hoạt động completely differently. Đó máy chủ gửi lại một
thông thường, hoạt động trang (một 200 OK), và bên trong đó trang HTML là an instruction
telling đó trình duyệt để go nơi nào đó khác:
<meta http-equiv="refresh" content="0;url=https://example.com/newlocation">Đó tag lives trong đó <head> of đó trang. Đó number trước đó semicolon là cách
nhiều seconds để chờ; đó url= part là nơi để gửi đó khách truy cập. Vì đây là
đó trình duyệt — không đó máy chủ — đó acts on điều này, này là called một client-side
chuyển hướng.
Instant so với. delayed
Có thực sự hai flavors, và đó khác biệt là chỉ đó number:
- Instant —
content="0;url=...". Đó trình duyệt jumps as soon as đó trang finishes loading. Này là đó version bạn muốn nếu bạn có để dùng meta refresh tại all. Google xử lý điều này như một vĩnh viễn chuyển hướng (similar để một 301). - Delayed —
content="5;url=..."(bất kỳ number bigger hơn 0). Đó trình duyệt cho thấy đó trang cho vài seconds, thì jumps. Google xử lý này as một tạm thời chuyển hướng, và đó delay là đó điều đó trong lịch sử đã nhận meta refresh một bad, spammy reputation.
Vì sao mọi người chẳng hạn để tránh điều này
MỘT meta refresh làm hoạt động — nhưng đây là weaker hơn một máy chủ chuyển hướng vì đó trình duyệt chỉ acts on đó chuyển hướng instruction khi đó trang là treated as finished loading — đó HTML Tiêu chuẩn own trigger condition — không trước. MỘT máy chủ-side chuyển hướng happens instantly, trước bất kỳ trang loads tại all. Google own hướng dẫn ranks máy chủ-side các chuyển hướng đầu tiên, meta refresh trong đó middle, và JavaScript các chuyển hướng cuối cùng.
So đó đơn giản rule: dùng một real 301 nếu bạn possibly có thể. Reach cho một meta
refresh chỉ khi bạn là on một host nơi bạn truly không thể set lên một máy chủ chuyển hướng
(some static hosting setups) — và ngay cả thì, dùng đó instant (0) version và
chuyển để một proper 301 đó moment bạn là able để.
Muốn đó đầy đủ picture — Google chính xác wording, đó accessibility angle, và cách để detect những trên trang web của bạn? Chuyển để đó Advanced tab.
TL;DR — MỘT meta refresh là an HTML
Evidence for this claim Google supports instant and delayed meta refresh redirects but recommends server-side permanent redirects when possible. Scope: Google redirect processing and implementation preference. Confidence: high · Verified: Google Search Central: Redirects Evidence for this claim Timed redirects can create accessibility problems, particularly when users cannot control the time limit. Scope: WCAG timing guidance; not a search-ranking claim. Confidence: high · Verified: W3C WCAG: Timing Adjustable<meta http-equiv="refresh">tag (hoặc đó máy chủ-injectedRefreshheader), không một3xxmã trạng thái — đó máy chủ trả về200và đó trình duyệt navigates chỉ sau đó trang có completely loaded. Instant (content="0") đọc as vĩnh viễn để Google, như một 301/308; delayed (> 0) đọc as tạm thời. Điều này sits giữa máy chủ-side và JavaScript các chuyển hướng trong Google reliability order làm đó đầy đủ-trang-load dependency. Mueller: điều này “should just work,” (bản dịch) «nên chỉ hoạt động,» nhưng không được khuyến nghị (lại-button history + parse-time cost). Dùng điều này chỉ khi bạn genuinely lack máy chủ access, ưu tiên0, pair điều này vớirel=canonicalvà một visible fallback link, và replace điều này với một real 301 as soon as bạn có thể.
đây là không một mã trạng thái
Này là đó một điều để nhận right. MỘT meta refresh là không an HTTP 3xx
phản hồi. Đó máy chủ trả về an ordinary 200 OK với một đầy đủ trang thân phản hồi; sitting
trong đó trang <head> là an HTML directive đó trình duyệt acts on sau đó
trang loads:
<!-- Instant: treated by Google as permanent -->
<meta http-equiv="refresh" content="0;url=https://example.com/newlocation">có một máy chủ-side tương đương — đó Refresh HTTP header — mà làm đó giống nhau
điều nhưng là injected by máy chủ code thay vì sitting trong đó markup:
HTTP/1.1 200 OK
Refresh: 0; url=https://www.example.com/newlocationNote đó ngay cả đó header version trả về 200, không một 3xx. Either way, này là một
client-side chuyển hướng: đó trình duyệt thực hiện đó navigation, không đó máy chủ.
Instant so với. delayed — Google split
Google draws đó line tại đó number of seconds. Trong của nó
Các chuyển hướng và Google Search
tài liệu điều này says điều này “differentiates between two kinds of meta refresh redirects” (bản dịch) «differentiates giữa hai kinds of meta refresh các chuyển hướng»:
- Instant (
content="0") — “Triggers as soon as the page is loaded… Google Search interprets instantmeta refreshredirects as permanent redirects.” (bản dịch) «Triggers as soon as đó trang là loaded… Google Search interprets instantmeta refreshcác chuyển hướng as vĩnh viễn các chuyển hướng.» So cho canonicalization đây là trong đó giống nhau bucket as một 301/308: Google follows điều này và dùng điều này as một tín hiệu đó đích nên là canonical. - Delayed (
contentgreater hơn 0) — “Triggers only after an arbitrary number of seconds… Google Search interprets delayedmeta refreshredirects as temporary redirects.” (bản dịch) «Triggers chỉ sau an arbitrary number of seconds… Google Search interprets delayedmeta refreshcác chuyển hướng as tạm thời các chuyển hướng.» Như một 302/303/307, đó đích có thể vẫn là được lập chỉ mục qua other các tín hiệu, nhưng đó chuyển hướng itself không taken as một vĩnh viễn-move tín hiệu.
My own chuyển hướng ordering trong đó Ahrefs hướng dẫn để 11 types of các chuyển hướng reflects này: cho vĩnh viễn moves I xếp hạng them 308 / 301 → meta refresh 0 → JavaScript → crypto, và delayed meta refresh drops để đó tạm thời tier alongside 302/303/307.
Nơi điều này sits trong Google order of preference
Google chuyển hướng tài liệu theo nghĩa đen publish một preference bảng, “ordered by how
likely Google is able to interpret [the redirect] correctly.” (bản dịch) «ordered by cách có khả năng Google là able để interpret [đó chuyển hướng] correctly.» Cho vĩnh viễn
các chuyển hướng đó order là: HTTP 301 → HTTP 308 → meta refresh (0 seconds) →
JavaScript location → crypto. Meta refresh là đó middle rung — dưới
máy chủ-side, trên JavaScript.
Google là rõ ràng về cả hai boundaries. On đó top boundary: “If server-side
redirects aren’t possible to implement on your platform, meta refresh redirects
may be a viable alternative.” (bản dịch) «Nếu máy chủ-side các chuyển hướng không có thể để implement on của bạn nền tảng, meta refresh các chuyển hướng có thể là một viable alternative.» On đó bottom boundary: “Only use JavaScript
redirects if you can’t do server-side or meta refresh redirects.” (bản dịch) «Chỉ dùng JavaScript các chuyển hướng nếu bạn không thể làm máy chủ-side hoặc meta refresh các chuyển hướng.» đó là đó
toàn bộ ladder trong hai sentences — và điều này matches đó cách diễn đạt đã trong đó
các chuyển hướng hub, mà notes đó JS
và delayed meta-refresh là weaker vì they phụ thuộc on kết xuất.
Hai khác nhau “orders” — không conflate them
Ở đây một subtlety đó trips lên nhà phát triển. MDN publishes một
khác nhau ordering
cho các chuyển hướng — nhưng đây là về trình duyệt execution order khi several chuyển hướng
mechanisms là stacked on một trang, không SEO reliability. MDN’s order là: HTTP
các chuyển hướng đầu tiên, thì JavaScript, thì meta refresh cuối cùng — vì “the <meta>
redirect happens after the page is completely loaded, which is after all scripts
have executed.” (bản dịch) «đó thẻ meta chuyển hướng happens sau đó trang là completely loaded, mà là sau all scripts có executed.»
So JavaScript “beats” meta refresh trong MDN’s timing order, nhưng meta refresh “beats” JavaScript trong Google reliability order. Cả hai là correct — they câu trả lời khác nhau các câu hỏi. MDN là asking “which fires first in the browser?” (bản dịch) «mà fires đầu tiên trong đó trình duyệt?» (synchronous JS chạy during load, trước đó meta refresh post-load timer). Google là asking “which am I most likely to interpret correctly for search?” (bản dịch) «mà am I hầu hết có khả năng để interpret correctly cho tìm kiếm?» (một meta refresh là đọc straight từ đó parsed HTML; một JS chuyển hướng cần Google tách biệt kết xuất step để succeed). Giữ những axes apart và đó apparent contradiction disappears.
Vì sao điều này phụ thuộc vào đó trang loading — và vì sao đó làm điều này weaker
MỘT meta refresh không thể fire until đó trang có completely loaded. Theo MDN’s
<meta http-equiv>
reference, “the timer starts when the page is completely loaded, which is after
the load and pageshow events have both fired.” (bản dịch) «đó timer bắt đầu khi đó trang là completely loaded, mà là sau đó load và pageshow events có cả hai fired.» đó là đúng ngay cả cho
content="0" — “instant” có nghĩa là zero additional delay sau load, không zero
elapsed time. MỘT chậm trang delays ngay cả một 0-second refresh trong một way một máy chủ-side
3xx không bao giờ có thể, vì đó máy chủ gửi đó chuyển hướng trước bất kỳ trang loads tại
all.
Worth đang precise: một meta refresh là không processed tại Google render (JS
execution) stage đó way một window.location chuyển hướng là — đây là đọc trực tiếp từ
đó parsed HTML <head>. Của nó weakness không đó kết xuất pipeline; đây là đó
đầy đủ-trang-load dependency (network completion, render-blocking các tài nguyên) plus,
cho delayed variants, an arbitrary chờ.
Điều gì đó HTML Tiêu chuẩn thực ra specifies
Đó HTML Tiêu chuẩn’s declarative-refresh algorithm là hơn precise hơn “waits for the page to load,” (bản dịch) «chờ cho đó trang để load,» và vài of của nó details quan trọng cho auditing và khắc phục sự cố:
- Due time. Đó refresh becomes due sau đó document completely-loaded time
và, cho một
<meta>element cụ thể, của nó insertion time — whichever là sau đó — adjusted cho người dùng preferences. đó là đó spec-cấp độ version of “after the page loads” (bản dịch) «sau đó trang loads»; chính xác mà network/render events count as “loaded” trong một được cho trình duyệt là an chi tiết triển khai, không điều gì đó Tiêu chuẩn itemizes as một universal fetch-và-paint sequence. - Relative URLs. Đó refresh đích là parsed relative để đó document own
URL, so khi bạn là auditing một, resolve đó absolute đích thay vì
trusting đó literal
url=string — một relative path có thể point nơi nào đó other hơn điều này looks như tại một glance. - Đầu tiên một wins. Khi một document là đã marked để declaratively refresh,
đó algorithm bỏ qua bất kỳ sau đó refresh instruction on đó trang. Hai conflicting
<meta refresh>tags (hoặc một tag plus mộtRefreshheader) không một fallback plan — đây là an authoring defect, và chỉ đó đầu tiên một takes effect. javascript:targets là rejected. Nếu đó parsed đích dùng đójavascript:scheme, đó algorithm trả về không có navigating.- Điều này không guaranteed để fire. Đó Tiêu chuẩn explicitly cho phép đó navigation để là canceled, adjusted by người dùng hoặc người dùng-agent preferences, blocked by một sandboxed document tự động-features restriction, exposed qua đó trình duyệt own UI, hoặc đơn giản không performed. không treat “it’ll redirect” (bản dịch) «điều này’ll chuyển hướng» as an absolute.
- History xử lý. Đó Tiêu chuẩn specifies replace history xử lý cho đó refresh navigation — meaning đó spec text có đó trình duyệt replace đó hiện tại history entry thay vì thêm một new một. đó là worth flagging so với đó “keeps the old page in browser history” (bản dịch) «giữ đó old trang trong trình duyệt history» cách diễn đạt dưới: đây là điều gì một named Google spokesperson reported về thực tế behavior trong 2018, và điều này có thể vẫn hold trong practice, nhưng điều này không điều gì đó hiện tại spec text itself mô tả. Treat “meta refresh always leaves the source page in history” (bản dịch) «meta refresh luôn leaves đó trang nguồn trong history» as unconfirmed folklore thay vì settled behavior — verifying điều này sẽ take trình duyệt/version-cụ thể kiểm thử, mà là bên ngoài điều gì những sources establish.
John Mueller put đó “why not recommended” (bản dịch) «vì sao không được khuyến nghị» case concisely (relayed by Công cụ tìm kiếm Roundtable, 2018): một meta refresh “should just work,” (bản dịch) «nên chỉ hoạt động,» nhưng Google không khuyến nghị điều này cho hai reasons — UX (“it keeps the page in browser history, afaik” (bản dịch) «điều này giữ đó trang trong trình duyệt history, afaik» — his own hedge) và processing time (Google có để parse đó trang để ngay cả see đó chuyển hướng). “Once processed, it’s just like a redirect.” (bản dịch) «Khi processed, đây là chỉ như một chuyển hướng.» đó là một hơn hữu ích lời giải thích hơn đó thông thường “it’s old and spammy,” (bản dịch) «đây là old và spammy,» vì điều này names concrete, non-spam costs — ngay cả khi đó history half là một reported observation thay vì một được ghi lại spec bảo đảm (see trên).
Vì sao đây là discouraged — đó lịch sử baggage
Tách biệt từ Mueller UX/parse-time reasons, meta refresh carries một reputation. Trong đó 2000s web-spam era điều này đã là một phổ biến doorway-trang vehicle: một trang ranks cho một query, thì near-instantly meta-refreshes đó khách truy cập để một khác nhau, ít hơn relevant đích — cho thấy các công cụ tìm kiếm và người dùng effectively khác nhau outcomes. đó là đó origin of đó “spammy” label. đây là worth đang chính xác ở đây: không hiện tại Google spam-policy trang names “meta refresh” (bản dịch) «meta refresh» explicitly; đó policies define “sneaky redirects” (bản dịch) «sneaky các chuyển hướng» và “doorway” abuse as chung categories đó meta refresh trong lịch sử phân phối as một mechanism cho. Treat này as lịch sử/ngành context, không an rõ ràng hiện tại policy citation.
có cũng một concrete, non-spam chế độ lỗi Mueller flagged trong một 2018 hangout (qua Search Engine Journal): một site đó meta-refreshed listing các trang để một shared payment trang. “So if you do this across your pages there’s a big chance we’ll follow this redirect and think ‘Oh, this payment page is actually what you want to have indexed and not the actual content.’” (bản dịch) «So nếu bạn làm này trên của bạn các trang có một big chance we’ll follow này chuyển hướng và think ‘Oh, này payment trang là thực ra điều gì bạn muốn để có được lập chỉ mục và không đó thực tế nội dung.’» Mass-refreshing nhiều nguồn các trang để một generic đích có thể nhận đó đích được lập chỉ mục thay vì nội dung của bạn.
None of đó làm an isolated, legitimate meta refresh một hình phạt risk. Google own hiện tại tài liệu call điều này “a viable alternative” (bản dịch) «một viable alternative» khi máy chủ-side các chuyển hướng không có thể. Đó risk là pattern và intent, không đó mechanism.
Evidence for this claim Google says meta refresh can be a viable alternative when server-side redirects are not possible, while permanent server-side redirects are recommended whenever possible for a URL move. Scope: meta refresh and HTTP Refresh interpretation Confidence: high · Verified: Redirects and Google SearchAccessibility: đó giống nhau instant-so với-delayed split
Đó SEO cách diễn đạt có an gần như chính xác twin trong accessibility hướng dẫn — với một
qualification worth stating lên front: W3C WAI techniques
là, trong của họ own words, các ví dụ of ways để đáp ứng WCAG success criteria, không
mandatory conformance rules. Đáp ứng hoặc bị thiếu một cụ thể technique không itself
an tự động truyền hoặc fail; đó thực tế requirement là đó success criterion (ở đây,
2.2.1 Timing Adjustable). Với tuy vậy, W3C own preference matches đó SEO
hướng dẫn trên: điều này khuyến nghị một máy chủ-side chuyển hướng đầu tiên, và nơi một
client-side chuyển hướng là genuinely necessary, của nó sufficient techniques (H76,
G110) call cho không delay (content="0") và một trang nguồn whose nội dung là
limited để chuyển hướng-related information plus một visible link để đó đích.
đó là một hẹp hơn bar hơn “any 0-second refresh automatically passes” (bản dịch) «bất kỳ 0-second refresh tự động truyền» — đây là
“zero delay, redirect-only content, and a fallback link” (bản dịch) «zero delay, chuyển hướng-chỉ nội dung, và một fallback link» as đó được ghi lại
sufficient pattern. MỘT delayed meta refresh với không way để pause, extend, hoặc
disable điều này risks failing 2.2.1, vì điều này có thể navigate away trước một
screen-reader người dùng hoặc ai đó với thấp vision có finished reading — nhưng liệu một
cụ thể delayed refresh thực ra fails đó criterion là một case-by-case WCAG
evaluation, không điều gì đó một technique number alone settles. MDN’s
accessibility note
mô tả đó giống nhau underlying risk: cũng-ngắn refresh intervals có nghĩa là mọi người dùng
assistive tech “may be unable to read through and understand the page’s content
before being automatically redirected.” (bản dịch) «có thể là unable để đọc qua và understand đó trang nội dung trước đang tự động được chuyển hướng.»
So cả hai một công cụ tìm kiếm và một các tiêu chuẩn thân phản hồi land on đó giống nhau rule: instant là
fine, delayed là risky. đó là một nice bit of reinforcement — và một hơn reason
để ưu tiên content="0" nếu bạn dùng meta refresh tại all.
Khi đây là một legitimate cuối cùng resort
Dùng meta refresh chỉ khi bạn genuinely không thể làm một máy chủ-side chuyển hướng. Real cases nơi đó happens:
- Static hosts với không máy chủ config — e.g. GitHub Các trang, nơi bạn không thể thêm
.htaccess/nginx rules. - Static-site generators whose “aliases” feature outputs meta refresh, không 301s.
Hugo là một known ví dụ — của nó
aliases:front-quan trọng generates little meta-refresh HTML files, không real máy chủ các chuyển hướng. (Hơn on đó trong Hugo SEO.) - Không-code / website-builder exports và some doc generators đó chỉ let bạn emit static HTML.
Nếu bạn là stuck với điều này, làm điều này well:
- Ưu tiên instant (
content="0") over bất kỳ delay — vĩnh viễn tín hiệu, và điều này clears đó accessibility bar. - Pair điều này với
rel="canonical"pointing tại đó đích, so đó canonicalization intent là rõ ràng ngay cả trước Google xử lý đó refresh. - Bao gồm một visible, clickable fallback link trong đó thân phản hồi cho đó rare trình duyệt hoặc assistive-tech setting nơi auto-refresh là disabled.
- không stack điều này vào một chuỗi chuyển hướng — nếu đó meta-refresh trang URL sau đó cũng nhận một máy chủ-side chuyển hướng layered on, bạn đã được xây dựng một chain (see chuyển hướng chains).
- Replace điều này với một real 301 đó moment bạn có máy chủ access. Meta refresh là một bridge, không một đích.
Detecting meta refresh trên trang web của bạn
Các crawler surface những, thường as một thấp-để-medium severity flag thay vì một
cốt yếu lỗi — Screaming Frog, Sitebulb, Ahrefs Site Audit, và Semrush all
báo cáo them. Cho an isolated handful of URLs đây là một “fix when convenient” (bản dịch) «cách sửa khi convenient» item, không
an emergency; site-wide dùng on quan trọng các trang là nơi điều này becomes worth
prioritizing. Để kiểm tra một single URL by hand, view nguồn hoặc curl đó trang và
tìm http-equiv="refresh" trong đó <head> (có ready snippets trong đó
Scripts lens).
Hãy cẩn thận với claims trong either direction on giá trị liên kết. Đó Ahrefs help-center line đó meta refresh “does not pass much or any link juice” (bản dịch) «không truyền nhiều hoặc bất kỳ link juice» là worth questioning — Google chuyển hướng bảng classifies an instant meta refresh trong đó giống nhau vĩnh viễn-chuyển hướng interpretation bucket as một 301, mà là một tín hiệu về cách Google đọc và canonicalizes đó chuyển hướng, không một stated promise về giống hệt PageRank, link-equity, hoặc xếp hạng transfer. Neither Google các chuyển hướng tài liệu nor đó HTML Tiêu chuẩn làm an rõ ràng claim về equity parity giữa một meta refresh và một 301 — so treat “it passes the same value as a 301” (bản dịch) «điều này truyền đó giống nhau giá trị as một 301» và “it passes little or none” (bản dịch) «điều này truyền little hoặc none» as equally unverified beyond điều gì là thực ra được ghi lại: Google classifies điều này as vĩnh viễn, và xử lý điều này sau điều này loads đó trang.
MỘT meta-refresh trang nguồn vẫn có của nó own HTTP phản hồi và của nó own HTML
document — auditing một không nên dừng tại reading đó refresh tag. Kiểm tra, trong order:
đó nguồn URL’s HTTP status và các header phản hồi (including một có thể Refresh
header); đó thô HTML versus điều gì một trình duyệt thực ra parses; mà refresh
directive là đó đầu tiên (và do đó effective) một, và của nó resolved absolute
đích; cách Google chuyển hướng bảng sẽ classify điều này (instant/vĩnh viễn so với.
delayed/tạm thời); đó trang nguồn own canonical tag, robots directives, và
indexability; đó cuối đích phản hồi; liệu đó chuyển hướng là
cancelable, controllable, hoặc skipped by người dùng/trình duyệt preferences; bộ nhớ đệm và history
behavior trong đó cụ thể named trình duyệt và version bạn là kiểm thử (không as một
universal claim); liên kết nội bộ vẫn pointing tại đó nguồn; và, cuối cùng, của bạn plan
để replace điều này với một máy chủ-side chuyển hướng. Đó Checklists và Scripts lenses on
này trang break những vào concrete steps và commands.
AI summary
MỘT condensed take on đó Advanced version:
- Không một mã trạng thái. MỘT meta refresh là an HTML
<meta http-equiv="refresh">tag (hoặc đóRefreshHTTP header). Đó máy chủ trả về200; đó trình duyệt navigates sau đó trang fully loads. đây là một client-side chuyển hướng. - Instant so với. delayed.
content="0"= Google xử lý điều này as vĩnh viễn (như một 301/308).content > 0= tạm thời (như một 302/303/307), và delay là đó trait tied để old doorway-trang spam. - Middle of Google order. Máy chủ-side → meta refresh → JavaScript → crypto. Google: “If server-side redirects aren’t possible… meta refresh… may be a viable alternative,” (bản dịch) «Nếu máy chủ-side các chuyển hướng không có thể… meta refresh… có thể là một viable alternative,» và “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (bản dịch) «Chỉ dùng JavaScript các chuyển hướng nếu bạn không thể làm máy chủ-side hoặc meta refresh các chuyển hướng.»
- Hai khác nhau “orders.” MDN’s execution order diễn đạt JS trước meta refresh (meta refresh fires post-load, sau scripts). Google reliability order diễn đạt meta refresh trên JS. Cả hai correct — khác nhau các câu hỏi.
- Vì sao weaker: đó HTML Tiêu chuẩn due-time algorithm holds điều này until đó trang là
loaded — đúng ngay cả cho
0— và đó navigation có thể là canceled hoặc skipped by người dùng/trình duyệt preferences; đây là không một 100% bảo đảm. Mueller: điều này “should just work” (bản dịch) «nên chỉ hoạt động» nhưng không được khuyến nghị (trình duyệt history “afaik” + parse-time cost) — đó history point là his reported observation, không điều gì đó hiện tại spec text itself trạng thái (đó Tiêu chuẩn specifies replace history xử lý). - Giá trị liên kết: unverified either way. Google bảng groups instant meta refresh với 301s cho interpretation, không một được ghi lại PageRank/equity-parity promise — không over-claim trong either direction.
- Accessibility mirrors SEO, với một caveat: W3C prefers máy chủ-side các chuyển hướng cũng; của nó sufficient techniques (H76/G110) call cho zero delay + chuyển hướng-chỉ nội dung + một fallback link — nhưng những là ví dụ techniques, không mandatory conformance rules. MỘT delayed refresh với không người dùng control risks failing 2.2.1 Timing Adjustable; liệu điều này thực ra làm là một case-by-case evaluation.
- Dùng chỉ as một cuối cùng resort (GitHub Các trang, Hugo
aliases, static/không-code hosts). Ưu tiên0, thêmrel=canonical+ một visible fallback link, tránh chains, và đổi trong một real 301 as soon as bạn có thể.
Tài liệu chính thức
Chính-nguồn tài liệu on meta refresh và nơi điều này fits.
- Các chuyển hướng và Google Search — đó chuyển hướng-preference bảng, đó instant-so với-delayed definition, và đó “viable alternative” (bản dịch) «viable alternative» cách diễn đạt.
- Spam policies cho Google web tìm kiếm — defines “sneaky redirects” (bản dịch) «sneaky các chuyển hướng» và “doorway” abuse as chung categories (note: làm không name meta refresh explicitly).
MDN
<meta http-equiv>— đó client-side mechanics: đó timer “starts when the page is completely loaded.” (bản dịch) «bắt đầu khi đó trang là completely loaded.»RefreshHTTP header — đó máy chủ-injected tương đương.- Redirections trong HTTP — đó trình duyệt execution order of precedence (distinct từ Google SEO order).
W3C / WCAG
- H76: Dùng meta refresh để tạo an instant client-side chuyển hướng — máy chủ-side được ưu tiên; nơi đó là không có thể, đó 0-second, chuyển hướng-chỉ-nội dung pattern as một sufficient technique (không một mandatory rule).
- G110: Dùng an instant client-side chuyển hướng — đó chung (non-HTML-cụ thể) version of đó giống nhau technique.
- F41: Failure due để dùng meta refresh với một time-out — cách an uncontrolled delayed refresh có thể fail 2.2.1 Timing Adjustable; một technique/failure trang, không itself đó conformance requirement.
Quotes từ đó nguồn
On-đó-record statements. Mỗi link là một deep link đó jumps để đó quoted passage.
Google — Các chuyển hướng và Google Search tài liệu
- “The following table explains the various ways you can use to set up permanent and temporary redirects, ordered by how likely Google is able to interpret correctly (for example, a server side redirect has the highest chance of being interpreted correctly by Google).” (bản dịch) «Đó sau bảng giải thích đó various ways bạn có thể dùng để set lên vĩnh viễn và tạm thời các chuyển hướng, ordered by cách có khả năng Google là able để interpret correctly (ví dụ, một máy chủ side chuyển hướng có đó highest chance of đang interpreted correctly by Google).» Nhảy đến trích dẫn
- “If server-side redirects aren’t possible to implement on your platform, meta refresh redirects may be a viable alternative.” (bản dịch) «Nếu máy chủ-side các chuyển hướng không có thể để implement on của bạn nền tảng, meta refresh các chuyển hướng có thể là một viable alternative.» Nhảy đến trích dẫn
- “Google differentiates between two kinds of meta refresh redirects: Instant meta refresh redirect: Triggers as soon as the page is loaded in a browser. Google Search interprets instant meta refresh redirects as permanent redirects. Delayed meta refresh redirect: Triggers only after an arbitrary number of seconds set by the site owner. Google Search interprets delayed meta refresh redirects as temporary redirects.” (bản dịch) «Google differentiates giữa hai kinds of meta refresh các chuyển hướng: Instant meta refresh chuyển hướng: Triggers as soon as đó trang là loaded trong một trình duyệt. Google Search interprets instant meta refresh các chuyển hướng as vĩnh viễn các chuyển hướng. Delayed meta refresh chuyển hướng: Triggers chỉ sau an arbitrary number of seconds set by đó chủ trang web. Google Search interprets delayed meta refresh các chuyển hướng as tạm thời các chuyển hướng.» Nhảy đến trích dẫn
- “Place the meta refresh redirect either in the <head> element in the HTML or in the HTTP header with server-side code.” (bản dịch) «Place đó meta refresh chuyển hướng either trong đó <head> element trong đó HTML hoặc trong đó HTTP header với máy chủ-side code.» Nhảy đến trích dẫn
- “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (bản dịch) «Chỉ dùng JavaScript các chuyển hướng nếu bạn không thể làm máy chủ-side hoặc meta refresh các chuyển hướng.» Nhảy đến trích dẫn
- “While Google attempts to render every URL Googlebot crawled, rendering may fail for various reasons. This means that if you set a JavaScript redirect, Google might never see it if rendering of the content failed.” (bản dịch) «Trong khi Google attempts để render mỗi URL Googlebot được crawl, kết xuất có thể fail cho various reasons. Này có nghĩa là đó nếu bạn set một JavaScript chuyển hướng, Google có thể không bao giờ see điều này nếu kết xuất of đó nội dung failed.» Nhảy đến trích dẫn
John Mueller, Google (tweets relayed qua Công cụ tìm kiếm Roundtable, March 2, 2018)
- “A meta refresh type redirect should just work. We don’t recommend it for 2 reasons: UX (it keeps the page in browser history, afaik) & processing time (we need to parse the page to see it). Once processed, it’s just like a redirect.” (bản dịch) «MỘT meta refresh loại chuyển hướng nên chỉ hoạt động. We không khuyến nghị điều này cho 2 reasons: UX (điều này giữ đó trang trong trình duyệt history, afaik) & processing time (we cần để parse đó trang để see điều này). Khi processed, đây là chỉ như một chuyển hướng.» Nhảy đến trích dẫn
John Mueller, Google (Quản trị viên web Central hangout, July 2018, relayed qua Search Engine Journal)
- “So if you do this across your pages there’s a big chance we’ll follow this redirect and think ‘Oh, this payment page is actually what you want to have indexed and not the actual content,’ and in that case we won’t have the content indexed.” (bản dịch) «So nếu bạn làm này trên của bạn các trang có một big chance we’ll follow này chuyển hướng và think ‘Oh, này payment trang là thực ra điều gì bạn muốn để có được lập chỉ mục và không đó thực tế nội dung,’ và trong trường hợp đó we sẽ không có đó nội dung được lập chỉ mục.» Nhảy đến trích dẫn
MDN
- “The timer starts when the page is completely loaded, which is after the load and pageshow events have both fired.” (bản dịch) «Đó timer bắt đầu khi đó trang là completely loaded, mà là sau đó load và pageshow events có cả hai fired.» Đọc đó doc
- “When possible, use HTTP redirects and don’t add <meta> element redirects.” (bản dịch) «Khi có thể, dùng HTTP các chuyển hướng và không thêm <meta> element các chuyển hướng.» Đọc đó doc
Mà chuyển hướng nên I dùng?
Meta refresh là một fallback, không một đầu tiên lựa chọn. Hoạt động xuống từ đó strongest option bạn có thể thực ra implement.
Choosing a redirect when meta refresh is on the table
Meta refresh myths và mistakes
Phổ biến misconceptions, và điều gì là thực ra đúng.
“Meta refresh is an HTTP redirect / a 3xx status code.” (bản dịch) «Meta refresh là an HTTP chuyển hướng / một 3xx mã trạng thái.»
Không. đây là an HTML tag (hoặc đó Refresh HTTP header) đó trình duyệt acts on sau
một thông thường 200 phản hồi và một đầy đủ trang load — không một mã trạng thái đó máy chủ gửi
trước bất kỳ nội dung.
“A 0-second meta refresh fires instantly, before the page even loads.” (bản dịch) «MỘT 0-second meta refresh fires instantly, trước đó trang ngay cả loads.»
Không. Theo MDN, đó timer “starts when the page is completely loaded.” (bản dịch) «bắt đầu khi đó trang là completely loaded.» content="0"
có nghĩa là zero additional delay sau load, không zero elapsed time. đó là chính xác vì sao
Mueller cites “processing time (we need to parse the page to see it)” (bản dịch) «processing time (we cần để parse đó trang để see điều này)» ngay cả cho đó
instant variant.
“Meta refresh is basically the same as a JavaScript redirect.” (bản dịch) «Meta refresh là basically đó giống nhau as một JavaScript chuyển hướng.» Không quite. Cả hai là client-side, nhưng một meta refresh là declared trong HTML và đọc straight từ đó parsed document, trong khi một JS chuyển hướng cần script execution. Google ranks meta refresh trên JS cho reliability; MDN’s trình duyệt execution order ranks synchronous JS trước meta refresh. Cả hai là đúng — they câu trả lời khác nhau các câu hỏi.
“Meta refresh doesn’t pass any link equity / PageRank.” (bản dịch) «Meta refresh không truyền bất kỳ giá trị liên kết / PageRank.» Unsupported as stated — nhưng so là đó opposite claim. Google chuyển hướng bảng diễn đạt an instant meta refresh trong đó giống nhau vĩnh viễn-chuyển hướng interpretation bucket as một 301/308, mà là về cách Google classifies và canonicalizes đó tín hiệu. Neither Google tài liệu nor đó HTML Tiêu chuẩn làm an rõ ràng statement về PageRank, link-equity, hoặc xếp hạng parity giữa đó hai mechanisms — so không assert sự tương đương either way beyond đó được ghi lại classification.
“Meta refresh is always spammy and will get my site penalized.” (bản dịch) «Meta refresh là luôn spammy và sẽ nhận my site penalized.» Sai as một blanket claim. Điều này có một lịch sử doorway-spam association, nhưng một single legitimate dùng — e.g. on một static host với không máy chủ access — không phải một spam tín hiệu. Google hiện tại tài liệu call điều này “a viable alternative.” (bản dịch) «một viable alternative.» Đó risk là pattern và intent (cloaking, mass-chuyển hướng để unrelated nội dung), không đó mechanism.
“A few seconds’ delay is a nice UX courtesy, not a real problem.” (bản dịch) «Vài seconds’ delay là một nice UX courtesy, không một real vấn đề.» Mixed. Bất kỳ delay greater hơn 0 downgrades điều này để Google tạm thời treatment, và W3C accessibility techniques treat an uncontrollable delay as đó pattern để tránh — nhưng một missed technique không tự động một WCAG violation on của nó own; điều này vẫn xuất hiện xuống để liệu đó thực tế success criterion (2.2.1, Timing Adjustable) là met. “A few seconds to let the user read a message” (bản dịch) «Vài seconds để let người dùng đọc một message» với không way để pause, extend, hoặc skip điều này là chính xác đó pattern đó risks failing điều này.
“My crawler flagged ‘meta refresh tag’ — it’s a critical issue to fix now.” (bản dịch) «My crawler flagged ‘meta refresh tag’ — đây là một cốt yếu vấn đề để cách sửa hiện tại.» Overstated cho isolated cases. Tools như Screaming Frog classify điều này as một thấp-severity warning. Worth thay thế với một real 301 khi bạn nhận máy chủ access, nhưng không đó giống nhau urgency tier as hỏng các chuyển hướng, loops, hoặc bị thiếu lập chỉ mục các tín hiệu — trừ khi đây là site-wide hoặc on cao-giá trị các trang.
Nếu bạn có để ship một meta refresh — checklist
Dùng này chỉ sau confirming một máy chủ-side chuyển hướng genuinely không khả dụng:
- Confirmed có không máy chủ-side chuyển hướng option (checked hosting
settings,
.htaccess/nginx access, CDN rules, framework config). - Dùng đó instant form —
content="0"— không một delayed một. - Đó tag là trong đó
<head>, và đóurl=giá trị là đó cuối đích (không một sản phẩm khác chuyển hướng — tránh building một chain). - Đã thêm một
rel="canonical"pointing tại đó đích URL. - Được bao gồm một visible, clickable fallback link trong đó thân phản hồi cho anyone whose trình duyệt/assistive-tech setting disables auto-refresh.
- Đích trả về một sạch
200(không itself một 404, chuyển hướng, hoặc lỗi). - Logged một follow-lên để replace điều này với một real 301 khi máy chủ access là khả dụng.
Auditing meta refresh trên một site
- Ran một crawl (Screaming Frog / Sitebulb / Ahrefs Site Audit / Semrush) và exported all URLs flagged as meta-refresh các chuyển hướng.
- Cho mỗi flagged URL, checked đó HTTP status và các header phản hồi
(including một có thể
Refreshheader) — không chỉ đó HTML. - Identified đó đầu tiên (effective) refresh directive nếu hơn một là
present, và resolved của nó
url=đích để an absolute URL. - Classified điều này instant so với. delayed để predict Google vĩnh viễn/tạm thời treatment, và riêng checked đó trang nguồn own canonical tag, robots directives, và indexability.
- Checked liệu đây là isolated (thấp priority) hoặc site-wide / on cao-giá trị các trang (prioritize).
- Looked cho đó payment-trang pattern — nhiều nguồn các trang refreshing để một generic đích đó có thể nhận được lập chỉ mục thay vì nội dung của bạn.
- Flagged bất kỳ delayed refreshes as cả hai an SEO và an accessibility vấn đề.
Meta refresh — bảng tra nhanh
Đó hai variants
| Variant | Syntax | Google xử lý điều này as | Accessibility |
|---|---|---|---|
| Instant | content="0;url=..." | Vĩnh viễn (như 301/308) | Sufficient technique (H76/G110) |
| Delayed | content="5;url=..." (bất kỳ > 0) | Tạm thời (như 302/303/307) | Risks failing 2.2.1 (F41 pattern) |
Google chuyển hướng preference (vĩnh viễn), strongest → weakest
| Xếp hạng | Phương thức | Notes |
|---|---|---|
| 1 | 301 / 308 (máy chủ-side) | Best — fires trước bất kỳ trang loads |
| 2 | Meta refresh 0 | Đọc as vĩnh viễn, nhưng clumsy/chậm (cần đầy đủ load) |
| 3 | JavaScript location | Cần kết xuất; có thể không bao giờ là seen nếu render fails |
| 4 | Crypto chuyển hướng | Đúng cuối cùng resort; không all bots hỗ trợ điều này |
Hai orderings, không conflate
| Câu hỏi | Order |
|---|---|
| Google — SEO reliability | máy chủ-side → meta refresh → JavaScript → crypto |
| MDN — trình duyệt execution timing | HTTP → JavaScript → meta refresh |
Fast facts
- Không một mã trạng thái — máy chủ trả về
200, trình duyệt navigates sau đầy đủ load. Refresh:HTTP header là đó máy chủ-injected tương đương (vẫn200).- “Instant” = zero delay sau load, không zero elapsed time.
- Mueller hai “not recommended” (bản dịch) «không được khuyến nghị» reasons: trình duyệt history (his reported “afaik”)
- parse-time cost. Đó Tiêu chuẩn itself specifies replace history xử lý.
- Giá trị liên kết/PageRank parity với một 301: undocumented either way — không assert điều này.
- Các crawler flag điều này thấp-để-medium severity, không cốt yếu.
- Dùng chỉ với không máy chủ access (GitHub Các trang, Hugo
aliases, static/không-code).
Detecting và reading meta refresh tags
Kiểm tra một URL từ đó command line
# Fetch the page and look for the meta refresh tag in the HTML
curl -s https://example.com/old-page/ | grep -i 'http-equiv=["'"'"']*refresh'
# Also check for the server-side Refresh header (case-insensitive)
curl -sI https://example.com/old-page/ | grep -i '^refresh:'MỘT meta-refresh trang trả về 200 (không một 3xx), so một đơn giản curl -I đó chỉ
looks tại các mã trạng thái sẽ miss điều này — bạn có để inspect đó thân phản hồi và đó Refresh
header cụ thể.
Extract đó đích với một regex
Đó content thuộc tính packs đó delay và URL together as N;url=.... Này pulls
out cả hai:
curl -s https://example.com/old-page/ \
| grep -io 'content=["'"'"']*[0-9]\+; *url=[^"'"'"'>]*'
# → content="0;url=https://example.com/newlocation"Nếu đó leading number là 0 đây là instant (vĩnh viễn để Google); bất cứ điều gì greater
hơn 0 là delayed (tạm thời).
XPath (cho một được kết xuất DOM hoặc an XML/HTML parser)
//meta[translate(@http-equiv,'REFSH','refsh')='refresh']/@contentĐó translate() normalizes đó thuộc tính để lowercase so điều này matches
Refresh, REFRESH, hoặc refresh.
Chrome DevTools console — inspect đó hiện tại trang
// Is there a meta refresh on this page, and where does it point?
const m = document.querySelector('meta[http-equiv="refresh" i]');
console.log(m ? m.getAttribute('content') : 'no meta refresh');Bookmarklet — flag meta refresh on bất kỳ trang bạn là viewing
javascript:(()=>{const m=document.querySelector('meta[http-equiv="refresh" i]');alert(m?('Meta refresh: '+m.getAttribute('content')):'No meta refresh tag on this page');})();Save đó as một bookmark; clicking điều này on bất kỳ trang tells bạn liệu một meta refresh là
present và của nó content giá trị — handy cho spot-kiểm tra một URL trước đó refresh
whisks bạn away.
Hai orders, hai khác nhau các câu hỏi
Meta refresh xuất hiện trong hai chuyển hướng orderings đó look contradictory until bạn name đó axis đang measured.
| Order | Câu hỏi | Sequence | Điều đó có nghĩa là gì |
|---|---|---|---|
| Trình duyệt execution | Mà mechanism fires đầu tiên khi several exist? | HTTP chuyển hướng → JavaScript → meta refresh | Meta refresh chờ until đó trang loads; synchronous JavaScript có thể chạy đầu tiên |
| Google reliability | Mà mechanism là Google hầu hết có khả năng để interpret correctly? | Máy chủ-side 301/308 → instant meta refresh → JavaScript | Parsed HTML là hơn dependable hơn một chuyển hướng đó requires successful JavaScript kết xuất |
Dùng đó framework trong three steps:
- Identify đó câu hỏi. Gỡ lỗi điều gì đó trình duyệt đã làm là an execution-order vấn đề. Chọn an SEO migration mechanism là một reliability-order vấn đề.
- Không convert timing vào endorsement. JavaScript firing trước meta refresh làm không làm điều này Google được ưu tiên chuyển hướng phương thức.
- Chọn đó strongest khả dụng layer. MỘT real máy chủ-side chuyển hướng vĩnh viễn vẫn
đó default. Nếu máy chủ access là genuinely không khả dụng, dùng an instant (
0second) meta refresh với một canonical và visible fallback link, thì replace điều này khi máy chủ control becomes khả dụng.
Đó giống nhau separation giải thích vì sao an “instant” meta refresh không phải network-instant: điều này adds zero delay chỉ sau đó document loads, trong khi một máy chủ chuyển hướng arrives trước đó document thân phản hồi.
Tự kiểm tra: meta refresh các chuyển hướng
Five nhanh các câu hỏi on cách meta refresh hoạt động và nơi điều này fits. Pick an câu trả lời cho mỗi, thì kiểm tra.
Các tài nguyên worth của bạn time
My related writing
- 11 Types Of Các chuyển hướng & Của họ SEO Impact (Ahrefs, với Joshua Hardwick) — my đầy đủ chuyển hướng ladder, including nơi meta refresh 0 sits giữa máy chủ-side và JavaScript.
- JavaScript SEO Các vấn đề & Thực hành tốt nhất (Ahrefs) — đó kết xuất side, và vì sao JS các chuyển hướng sit dưới meta refresh trong reliability.
- Điều gì là ‘meta refresh chuyển hướng’ và vì sao là điều này considered một cốt yếu vấn đề? (Ahrefs Help Center) — đó Site Audit cách diễn đạt cho đó crawl-flag audience (note: của nó “doesn’t pass link juice” (bản dịch) «không truyền link juice» line không được hỗ trợ by Google tài liệu either way — see đó Advanced lens cho vì sao để tránh đó claim trong cả hai directions).
My speaking
- Cách Tìm kiếm Hoạt động (SlideShare) — my walkthrough of crawling, kết xuất, lập chỉ mục, và xếp hạng, đó pipeline một client-side chuyển hướng có để survive. (Standing disclaimer: “This is my understanding of systems… not going to be 100% complete or accurate.” (bản dịch) «Này là my understanding of các hệ thống… không going để là 100% hoàn tất hoặc chính xác.»)
Từ khoảng đó ngành
- Các chuyển hướng và Google Search (Google Search Central) — đó chính nguồn cho đó instant/delayed split và đó preference order.
- Google Says Meta Refresh Các chuyển hướng Hoạt động Fine Nhưng Không Được khuyến nghị (Công cụ tìm kiếm Roundtable) — Barry Schwartz relaying Mueller “should just work” (bản dịch) «nên chỉ hoạt động» tweet và his hai reasons so với điều này.
- Google Warns Dùng Meta Refresh Có thể Lead để Sai Nội dung Getting Được lập chỉ mục (Search Engine Journal) — đó “payment page gets indexed instead of your content” (bản dịch) «payment trang nhận được lập chỉ mục thay vì nội dung của bạn» chế độ lỗi.
- Redirections trong HTTP (MDN) — đó trình duyệt execution order of precedence (distinct từ Google SEO order).
- Các chuyển hướng dùng một Meta refresh (Sitebulb) — đó audit-tool workflow cho finding và triaging them.
- Internal Redirection (Meta Refresh) (Screaming Frog) — cách đó crawler flags điều này, và tại điều gì severity.
- Chuyển hướng một GitHub Các trang site với này HTTP hack (Opensource.com) — một thực tế “no server access” (bản dịch) «không máy chủ access» meta-refresh ví dụ on một static host.
Nhật ký thay đổi
Đã 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 18 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.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
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.