JavaScript yönlendirmeler

ne bir JavaScript yönlendirme dır, nasıl Google's render pipeline treats o differently -den bir server-side 301, ne zaman o's bir acceptable son resort, ve nasıl -e implement ve detect bir — plus nerede meta refresh ve History API fit.

İlk yayın tarihi: 27 Haz 2026 · Son güncelleme: 8 Ağu 2026 · Advanced
Diller
Bu sayfada 1 kanıt sinyali

bir JavaScript yönlendirme sends kullanıcılar ve crawlers -e bir yeni URL ile client-side code (window.location.replace() veya .href). o's least reliable yönlendirme type çünkü Google yalnızca sees o sonra rendering — hangi -ebilir olmak delayed, veya başarısız ol entirely, ile no düzeltilmiş timeline either way. Google's resmî sıra of preference dır server-side (301/302/307/308) → meta refresh → JavaScript, ve onun docs söyle plainly: yalnızca kullan JS yönlendirmeler eğer -ebilirsiniz't yap diğer two. Once Google successfully interprets bir, target olur bir canonical'laştırma sinyal — ama şu's değil bir proven guarantee of identical PageRank veya sıralama outcomes -e bir 301, bu nedenle ele al o olarak bir son resort yerine bir like-bençin-like swap. kullan them on constrained platforms ile no server access, bençin SPA error sayfalar şu benşaret et -e bir gerçek 404, ve little else. -erseniz -meli kullan bir, kullan window.location.replace() in <head>, drop kaynak URL -den sizin sitemap, ve benşaret et benç bağlantılar at final destination. Meta refresh dır bir separate HTML-level yönlendirme, ve history.pushState()/replaceState() değildir yönlendirmeler at tümü.

TL;DR — bir JavaScript yönlendirme dır bir client-side yönlendirme (window.location.replace(), .href, .assign()) şu Google yalnızca süreçler sonra rendering — phase three of tarama → render → dizin. bir server-side 301 dır seen at tarama time; bir JS yönlendirme waits on render queue, ve Google verir no düzeltilmiş timeline bençin şu wait — o -ebilir olmak quick veya o -ebilir take bir uzun -iken, ve rendering -ebilir başarısız ol outright. Google’s documented preference sıra dır server-side → meta refresh → JavaScript, ve docs söyle -e kullan JS yönlendirmeler yalnızca -dığınızda -ebilir’t yap diğer two. Once Google successfully interprets bir, target olur bir permanent canonical’laştırma sinyal — hatta Google kullanılan them on onların kendi blog ne zaman nothing else worked — ama şu’s değil documented proof of identical PageRank veya sıralama outcomes -e bir 301, bu nedenle onlar’re bir son resort, değil bir spam sinyal. legitimate kullanır dır constrained platforms ile no server config ve SPA error sayfalar şu benşaret et at bir gerçek 404. Implement ile window.location.replace() in <head>, drop kaynak -den sizin sitemap, repoint benç bağlantılar, ve yapğrula Googlebot -ebilir fetch JS. Meta refresh dır HTML-level (0s = permanent, herhangi bir delay = temporary), ve history.pushState()/replaceState() değildir yönlendirmeler at tümü.

ne counts olarak bir JavaScript yönlendirme

Script navigation depends on rendering ve execution, bu nedenle o değildir protokol-eşdeğeri -e bir HTTP yönlendirme. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: JavaScript redirects Processing dır olası, değil bir exact-timing veya dizine ekleme guarantee. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: Redirects and Search

bir JavaScript yönlendirme navigates browser -e bir yeni URL ile client-side code. yaygın methods, ve nasıl onlar differ:

  • window.location.replace("url") — navigates ve removes özgün URL -den session history. bu bir -e kullan: back button skips yönlendirme kaynak yerine bouncing kullanıcı straight back.
  • window.location.href = "url" — navigates ama keeps özgün in history, bu nedenle back button döndürür -e yönlendiren sayfa (ve -ebilir oluştur bir loop). document.location.href ve window.location.assign("url") behave aynı way.
  • history.pushState() / history.replaceState()değil yönlendirmeler. onlar rewrite adres bar olmadan herhangi bir navigation veya HTTP sinyal, bu nedenle crawlers yapmayın ele al them olarak yönlendirmeler. SPAs kullan them bençin in-app URL changes; onlar ihtiyaç duy gerçek <a href> bağlantılar (veya gerçek navigations) -e olmak crawlable.

dividing line şu önem taşır: .replace(), .href, ve .assign() tümü trigger bir gerçek belge navigation ( difference arasında them dır yalnızca ne olur -e session history), -iken pushState()/replaceState() never navigate at tümü — onlar touch history state ve adres bar ve nothing else. None of four dır bir HTTP 301; “redirect” burada dır shorthand bençin client-side navigation, değil bir status code.

Meta refresh (<meta http-equiv="refresh" content="0;url=...">) dır çoğu zaman lumped in ile JS yönlendirmeler, ama o’s bir HTML directive parsed önce JavaScript runs — bir separate, daha reliable category, covered below.

nasıl Google süreçler bir JavaScript yönlendirme

bu crux. Google’s pipeline runs in stages, ve bir JS yönlendirme ve bir server-side yönlendirme al caught at farklı ones:

  1. tarama — Googlebot fetches URL ve reads raw HTML. bir server-side 301/302/307/308 dır seen yapğru burada.
  2. Render queue — sayfalar şu döndür 200 wait -e olmak rendered. Google’s docs note sayfa “-ebilir stay on bu queue bençin bir few seconds, ama o -ebilir take longer -den şu.” Google yapmaz publish bir düzeltilmiş service-level timeline beyond şu, bu nedenle ele al wait olarak unpredictable — o -ebilir olmak quick, veya o -ebilir drag — rather -den assuming herhangi bir specific number of days veya weeks.
  3. Render + dizin — headless Chromium runs JavaScript. bu ilk moment bir JS yönlendirme vardır olarak far olarak Google dır concerned.

aynı idea ben yap on tarama ve in JavaScript SEO uygulanır burada: rendering dır bir separate adım -den fetching, ve anything şu depends on o inherits şu delay ve şu risk.

ve risk dır gerçek. Google: “-iken Google attempts -e render her URL Googlebot tarandı, rendering -ebilir başarısız ol bençin various nedenler. bu anlamına gelir şu -erseniz ayarla bir JavaScript yönlendirme, Google -ebilir never see o eğer rendering of bençerik failed.” (Google arama Central) During window önce yönlendirme dır processed — ve forever, eğer rendering fails — Google -ebilir koru empty kaynak sayfa in onun dizin.

Google’s resmî preference sıra

yönlendirmeler dokümantasyon lays out bir hierarchy -den en çok -e least reliable:

  1. Server-side yönlendirmeler — 301/308 (permanent), 302/307 (temporary). en iyi bençin everything: seen at tarama time, unambiguous.
  2. Meta refresh — HTML-level. bir 0-ikinci meta refresh dır ele alınır olarak bir permanent yönlendirme (like bir 301); herhangi bir delayed meta refresh dır ele alınır olarak temporary.
  3. JavaScript yönlendirmeler — son resort.

Google’s words: “yalnızca kullan JavaScript yönlendirmeler eğer -ebilirsiniz’t yap server-side veya meta refresh yönlendirmeler.” Permanent yönlendirmeler geç canonical sinyal -e target; temporary ones koru özgün in sonuçlar. (nasıl şu interacts ile canonical seçimi dır üzerinde on canonical’laştırma.)

yapar bağlantı değeri geç aracılığıyla?

Google’ın kendi yönlendirmeler dokümantasyon listeler JavaScript location navigation among onun permanent redirection methods, ve söyler target olur canonical’laştırma sinyal once Google sahiptir interpreted o — bu nedenle flat “JS yönlendirmeler yapmayın geç PageRank” claim dır false. ne dokümantasyon yapmaz establish dır şu outcome dır identical, immediate, veya olarak reliable olarak bir server-side 301 — o describes canonical sinyal, değil bir guarantee of matching PageRank flow, sıralama, veya timing. honest framing: bir 301 geçer sinyal at tarama time ile near-certainty; bir JS yönlendirme geçer o yalnızca eğer ve ne zaman rendering succeeds, ve Google yapmaz promise sonuç -ecek match bir 301’s outcome bir-bençin-bir. şu gap — değil lost equity — dır gerçek maliyet of choosing JavaScript.

bu ayrıca neden JS yönlendirmeler değildir bir penalty trigger on onların kendi. onlar yalnızca ol bir spam sorun ne zaman onlar’re kullanılan bençin cloaking — gösterme crawlers bir sayfa ve yönlendiren kullanıcılar -e something farklı, veya sending mobile kullanıcılar -e bir unrelated domain. Google’s sneaky yönlendirmeler politika dır hakkında şu intent, değil technique.

ne zaman bir JavaScript yönlendirme dır yapğru araç

vardır legitimate durumlar:

  • Constrained platforms. bazı shared hosting, CDN, veya CMS setups ver siz no access -e server-side yönlendirme kurallar. bir JS yönlendirme dır bir valid fallback — ve notably, Google kullanılan JS yönlendirmeler on onların kendi Webmaster blog çünkü, olarak Gary Illyes put o, “şu idi yalnızca thing biz -ebilirdi kullan bençin 1:1 yönlendirmeler, ve o çalışır on Google” (OnCrawl).
  • SPA error handling. Google explicitly endorses bu: “kullan bir JavaScript yönlendirme -e bir URL bençin hangi server responds ile bir 404 HTTP status code.” (Google arama Central) bir tek-sayfa app şu resolves bir bad route -ebilir yönlendirme -e bir gerçek 404 endpoint bu nedenle Google süreçler error yapğru biçimde yerine dizine ekleme bir soft 404.

bençin permanent URL migrations, bu değil araç — kullan bir 301. ben yap aynı benşaret et in site migrations: JavaScript yönlendirmeler dır bir son resort, ve Google -ebilir never see them.

Static site generators: Hugo aliases trap

bir yaygın surprise: Hugo’s aliases: frontmatter sahiptir historically generated meta refresh HTML sayfalar, değil server-side 301s — ve diğer static generators sahip done benzer things tarafından default. Generator defaults change arasında sürümler, bu nedenle kontrol et sizin güncel deployed sürüm’s gerçek output yerine assuming; eğer aliases: değildir giving siz 301s, siz ihtiyaç duy platform-level yönlendirme kurallar (Netlify _redirects, Cloudflare Workers, Vercel vercel.json) plus (on Hugo) disableAliases: true. ben kapsa bu in detail in Hugo SEO.

Implementation en iyi practices

eğer bir JavaScript yönlendirme dır genuinely sizin yalnızca option:

  • kullan window.location.replace(), değil .href. olarak arama motoru Journal puts o, JS yönlendirmeler “typically kullan window.location.replace() function yerine window.location.href -e kaçın UX yönlendirme loops” (SEJ).
  • Put o in <head>, değil <body>. Browsers parse HTML sequentially ve çalıştır scripts olarak onlar hit them, bu nedenle “position JavaScript yönlendirmeler in <head> tag yerine <body> -e minimize delay” (OnCrawl).
  • yönlendirme -e final destination in bir hop. bir JS yönlendirme -e bir sayfa şu itself 301s elsewhere yapar bir chain; chains waste tarama bütçesi ve -ebilir surface in GSC olarak bir yönlendirme error.
  • kaldır kaynak URL -den sizin XML sitemap. Sitemaps -meli liste canonical, indexable URLs — değil yönlendiren ones.
  • Repoint benç bağlantılar at destination, bu nedenle onlar yapmayın route aracılığıyla yönlendirme at tümü.
  • emin olun Googlebot -ebilir fetch JS. eğer yönlendirme lives in bir external script blocked tarafından robots.txt, Google -ebilir’t render o ve won’t see yönlendirme.

nasıl -e detect JavaScript yönlendirmeler

onlar yapmayın announce themselves like bir 301 in bir header, bu nedenle siz sahip -e render:

  • bir crawler ile JS rendering on. OnCrawl recommends tarama ile “JavaScript rendering enabled (5-second timeout minimum)”; Screaming Frog ve Ahrefs site denetimi -ebilir her ikisi render. olmadan rendering, bir JS-yönlendiren sayfa sadece görünür like bir olağbir 200.
  • Chrome DevTools. Network tab (ile “Preserve log”) shows client-side navigation; yönlendirme Path extension flags o de.
  • In arama Console, bir successfully processed JS yönlendirme shows up altında sayfa ile yönlendirme — aynı status olarak herhangi bir redirected URL, bu da olağbir bençin non-canonical kaynaklar. şu label değildir guaranteed on herhangi bir given kontrol et, gerçben: o reflects whatever Google fetched, rendered, interpreted, ve canonicalized at sampled moment, bu nedenle bir URL -ebilir göster bir farklı status (veya no yönlendirme status henüz) arasında kontroller olmadan şu olma bir error on sizin end.

ne ben’d aslında yap

Server-side ilk, her time. Meta refresh (0-ikinci) -dığınızda -ebilir edit HTML ama değil server config. JavaScript yalnızca ne zaman her ikisi dır off table — ve o hâlde ile window.location.replace() in <head>, bir temiz sitemap, ve bir kontrol et şu yönlendirme aslında renders bençin Googlebot. bençin anything permanent veya high-değer, extra reliability of bir 301 dır worth almost herhangi bir effort -e obtain.

Add an expert note

Pin an expert quote

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