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.
Diller
Bu sayfada 1 kanıt sinyali
- İlgili canlı araçrobots.txt Tester
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 kullanır code in sayfa -e send siz -e bir farklı URL sonra sayfa loads. o çalışır bençin kişiler, ama arama motorları ele al o daha az reliably -den bir “real” server yönlendirme (bir 301). eğer -ebilirsiniz ayarla up bir 301 instead, yap şu. Save JavaScript yönlendirmeler bençin -dığınızda sahip no diğer option.
ne bir JavaScript yönlendirme dır
bir JavaScript yönlendirme changes navigation aracılığıyla script execution yerine bir HTTP 3xx response. 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 Google -ebilir süreç JavaScript yönlendirmeler ama recommends server-side yönlendirmeler ne zaman olası. 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
vardır two broad ways -e send someone -den bir URL -e başka bir.
ilk dır bir server-side yönlendirme. önce sayfa hatta loads, server söyler “that page moved — go here instead” kullanarak bir status code like 301 (permanent) veya 302 (temporary). browser ve arama motoru her ikisi al şu message immediately.
ikinci dır bir JavaScript yönlendirme. sayfa loads normally, ve o hâlde bir bit of code runs in browser ve sends siz somewhere else. Something like:
<script>
window.location.replace("https://example.com/new-page/");
</script>bençin bir kişben clicking yaklaşık, two feel almost aynı. bençin bir arama motoru, onlar’re çok farklı — ve şu difference dır whole neden bu sayfa vardır.
neden arama motorları ele al them differently
Google reads sizin sayfa in stages. ilk o tarar (downloads raw HTML). Later o renders sayfa — aslında çalışbir JavaScript, way bir browser -irdi. bir server-side 301 dır visible in şu ilk adım. bir JavaScript yönlendirme değildir visible until rendering adım, hangi -ebilir come much later — veya, bazen, değil at tümü.
Google şunu söylüyor o yapğrudan: “yalnızca kullan JavaScript yönlendirmeler eğer -ebilirsiniz’t yap server-side veya meta refresh yönlendirmeler.” (Google arama Central)
bu nedenle bir JavaScript yönlendirme değildir bad — o’s sadece daha az reliable. Google -ecek genellikle al orada eventually, ama bir gerçek 301 dır faster ve daha certain.
simple kural
- -ebilir siz ayarla bir 301 (veya 302)? yap şu. o’s gold standard.
- -ebilir’t touch server, ama -ebilir edit HTML
<head>? bir 0-ikinci meta refresh dır sonraki-en iyi option. - Neither? o hâlde bir JavaScript yönlendirme dır bir fine son resort.
bir couple of things kişiler al yanlış:
- bir meta refresh değildir bir JavaScript yönlendirme. o’s bir
<meta>tag in sizin HTML, ve Google handles o earlier ve daha reliably -den JS. history.pushState()değildir bir yönlendirme. o sadece changes ne’s in adres bar — o yapmaz send anyone anywhere, ve arama motorları yapmayın izle o.
iste render-pipeline timing, implementation details, ve nasıl -e bul JS yönlendirmeler in bir tarama? Switch -e Advanced tab.
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 ilewindow.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), vehistory.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.hrefvewindow.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:
- tarama — Googlebot fetches URL ve reads raw HTML. bir server-side 301/302/307/308 dır seen yapğru burada.
- Render queue — sayfalar şu döndür
200wait -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. - 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:
- Server-side yönlendirmeler — 301/308 (permanent), 302/307 (temporary). en iyi bençin everything: seen at tarama time, unambiguous.
- 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.
- 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
404HTTP 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 kullanwindow.location.replace()function yerinewindow.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.
AI özet
bir condensed take on Advanced sürüm:
- bir JavaScript yönlendirme dır client-side (
window.location.replace(),.href,.assign()). o’s yalnızca processed sonra rendering — phase three of tarama → render → dizin — whereas bir server-side 301 dır seen at tarama time. - ** render queue dır risk:** bir sayfa “-ebilir stay on bu queue bençin bir few seconds, ama o -ebilir take longer,” ile no düzeltilmiş service-level timeline, ve rendering -ebilir başarısız ol entirely, in hangi durum Google -ebilir never see yönlendirme ve keeps kaynak sayfa dizine eklenmiş.
- Google’s preference sıra: server-side (301/302/307/308) → meta refresh → JavaScript. Docs: “yalnızca kullan JavaScript yönlendirmeler eğer -ebilirsiniz’t yap server-side veya meta refresh yönlendirmeler.”
- ** target olur bir canonical’laştırma sinyal** once Google interprets bir JS yönlendirme — bu nedenle “JS redirects don’t pass PageRank” myth dır false — ama Google yapmaz belge şu outcome matches bir server-side yönlendirme’s PageRank flow, sıralama, veya timing tam olarak. JS yönlendirmeler değildir bir penalty trigger unless kullanılan bençin cloaking (sneaky yönlendirmeler).
- Legitimate kullanır: constrained platforms (Google itself kullanılan them on onların blog), ve SPA error sayfalar şu yönlendirme -e bir gerçek 404 (Google-endorsed).
- Meta refresh ≠ JS yönlendirme: o’s HTML-level; 0s = permanent, herhangi bir delay =
temporary.
history.pushState()/replaceState()değildir yönlendirmeler — no HTTP sinyal, crawlers yapmayın izle them. - Hugo
aliases:dır meta refresh, değil 301s — bir yaygın trap on static generators. - Implementation:
window.location.replace()in<head>, tek hop -e destination, kaldır kaynak -den sitemap, repoint benç bağlantılar, ensure Googlebot -ebilir fetch JS. - Detection: tarama ile JS rendering on, Chrome DevTools / yönlendirme Path, “Page with redirect” in GSC.
resmî dokümantasyon
birincil-kaynak rehberlik on yönlendirmeler ve JavaScript.
- yönlendirmeler ve Google arama — preference hierarchy (server-side → meta refresh → JavaScript), permanent vs. temporary handling, ve meta refresh delay kurallar.
- JavaScript SEO Basics — render pipeline ve endorsed SPA-404 yönlendirme kullan durum.
- düzelt arama-related JavaScript problems — soft 404s, rendering, ve debugging JS şu Google -ebilir’t süreç.
- Sneaky yönlendirmeler (spam politikalar) — ne zaman bir yönlendirme crosses -e cloaking ve olur bir politika violation.
Bing / Microsoft
- Bing Webmaster yardım et — entry benşaret et bençin Bing’s güncel rehberlik. (At time of yazma, Bing sahipti no dedicated yönlendirmeler yardım et sayfa at bir stable URL; Bingbot renders JavaScript daha az reliably -den Googlebot, hangi yapar JS-yalnızca yönlendirmeler riskier bençin Bing indexation.)
Quotes -den kaynak
On—record statements -den Google ve kişiler kim çalışır on arama. her Google-docs bağlantı dır bir deep bağlantı şu jumps -e quoted passage.
Google — preference sıra ve rendering risk
- “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” — Google arama Central docs. Jump -e quote
- “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.” — Google arama Central docs. Jump -e quote
Google — endorsed SPA kullan durum
- “Use a JavaScript redirect to a URL for which the server responds with a
404HTTP status code (for example/not-found).” — Google arama Central docs. Jump -e quote
Gary Illyes, Google
- On JS yönlendirmeler generally: “Js redirects are probably not a good idea though.” (July 8, 2020)
- On Google kullanarak them anyway ne zaman nothing else worked: “We used JS redirects on webmasters.googleblog.com because that was the only thing we could use for 1:1 redirects, and it works on Google.” Coverage
arama motoru Journal — implementation ve bağlantı değeri
- “JavaScript redirects typically use
window.location.replace()function rather thanwindow.location.hrefto avoid UX redirect loops.” okuyun - “JavaScript redirects are not SEO-friendly and should be avoided when alternatives exist… Only implement JavaScript redirects when server-side alternatives are genuinely unavailable.” okuyun
yönlendirme types — cheat sheet
ne zaman Google sees o, ve nasıl o’s ele alınır
| yöntem | ne zaman Google sees o | ele alınır olarak | Reliability |
|---|---|---|---|
Server-side 301 / 308 | tarama time | Permanent | Highest |
Server-side 302 / 307 | tarama time | Temporary | Highest |
Meta refresh, 0 seconds | HTML parse time | Permanent | High |
Meta refresh, delayed (>0s) | HTML parse time | Temporary | High |
| JavaScript yönlendirme | sonra rendering | Follows navigation | Lowest |
history.pushState() / replaceState() | — | değil bir yönlendirme | n/bir |
JavaScript yönlendirme methods
| Code | History behavior | kullan o? |
|---|---|---|
window.location.replace("url") | Removes kaynak -den history | Yes — recommended |
window.location.href = "url" | Keeps kaynak (back-button loop) | kaçın bençin yönlendirmeler |
window.location.assign("url") | aynı olarak .href | kaçın bençin yönlendirmeler |
document.location.href = "url" | Alias bençin .href | kaçın bençin yönlendirmeler |
Kısa bilgiler
- Google’s sıra: server-side → meta refresh → JavaScript. kullan JS yalnızca ne zaman ilk two dır impossible.
- Once interpreted, bir JS yönlendirme’s target dır bir canonical’laştırma sinyal — “JS redirects don’t pass PageRank” myth dır false. Google yapmaz belge şu outcome olarak identical -e bir 301’s, bu nedenle gerçek risk dır delay / render başarısızlık, değil bir documented PageRank penalty.
- JS yönlendirmeler dır değil bir penalty unless kullanılan bençin cloaking.
- Hugo
aliases:= meta refresh, değil 301. - bir processed JS yönlendirme görünür olarak “Page with redirect” in GSC.
-meli ben kullan bir JavaScript yönlendirme? — decision checklist
Walk bu top -e bottom; durdur at ilk “yes.”
- -ebilir ben ayarla bir server-side
301/302/307/308? → yap şu. durdur burada. - -ebilir ben edit HTML
<head>ama değil server config? → kullan bir 0-ikinci meta refresh bençin permanent moves. durdur burada. - Neither dır olası (locked-down platform), veya o’s bir SPA error sayfa şu -meli hit bir gerçek 404? → bir JavaScript yönlendirme dır acceptable. Continue.
-erseniz’re kullanarak bir JavaScript yönlendirme
- kullan
window.location.replace()(değil.href/.assign()). - Place script in
<head>, olarak early olarak olası. - yönlendirme straight -e final destination — no chain aracılığıyla başka bir yönlendirme.
- kaldır kaynak URL -den sizin XML sitemap.
- Repoint benç bağlantılar -e destination.
- yapğrula yönlendirme’s JS dır değil blocked in
robots.txtbu nedenle Googlebot -ebilir render o. - siz dır değil gösterme crawlers bir sayfa ve yönlendiren kullanıcılar elsewhere (cloaking).
- Verify tarafından tarama ile JS rendering on ve checking “Page with redirect” in GSC.
recommended JavaScript yönlendirme
Put bu in <head> bu nedenle o executes olarak early olarak olası in parse sıra:
<head>
<script>
window.location.replace("https://example.com/new-page/");
</script>
</head>replace() dır key choice — o drops yönlendiren URL -den session history,
bu nedenle back button yapmaz bounce kullanıcı straight back -e yönlendirme.
0-ikinci meta refresh (sonraki-en iyi -dığınızda -ebilir’t yap server-side)
değil JavaScript, ama yapğru fallback -dığınızda -ebilir edit HTML ve değil server config. bir 0-ikinci delay dır ele alınır tarafından Google olarak bir permanent yönlendirme:
<head>
<meta http-equiv="refresh" content="0; url=https://example.com/new-page/">
</head>ne değil -e kullan olarak bir yönlendirme
history.pushState() rewrites adres bar ama performs no navigation ve
sends no HTTP sinyal — crawlers won’t izle o:
// NOT a redirect — only changes the URL bar, no navigation happens
history.pushState({}, "", "/new-page/");-erseniz ihtiyaç duy bir SPA route change -e olmak crawlable, ver o bir gerçek <a href> bağlantı veya
bir genuine navigation, değil sadece bir History API çbirğrı.
SPA error sayfa → gerçek 404 (Google-endorsed pattern)
ne zaman bir tek-sayfa app resolves bir unknown route, send o -e bir endpoint şu
döndürür bir gerçek 404 bu nedenle Google süreçler error yerine bir soft 404:
// On an unresolved route in your SPA:
window.location.href = "/not-found"; // /not-found must return HTTP 404 araçlar bençin bulma ve checking JavaScript yönlendirmeler
- Screaming Frog SEO Spider — enable JavaScript rendering (ile bir sufficient
rendering timeout) bu nedenle JS-yönlendiren sayfalar yapmayın sadece bak like plain
200s. - Ahrefs site denetimi — renders sayfalar ve surfaces yönlendirmeler, chains, ve redirected benç bağlantılar.
- Chrome DevTools — Network tab — turn on “Preserve log” ve watch client-side navigation fire.
- yönlendirme Path (Chrome extension) — flags client-side yönlendirmeler alongside server-side ones in bir quick popup.
- Google arama Console — URL Inspection — see nasıl bir tek URL idi tarandı ve rendered, ve whether Google landed on “Page with redirect.”
- GSC — sayfa dizine ekleme rapor — “Page with redirect” listeler redirected URLs; “Redirect error” surfaces chains ve loops.
Mistakes -e kaçın ile JavaScript yönlendirmeler
- kullanarak
window.location.href(veya.assign()) yerine.replace()..hrefkeeps yönlendiren sayfa in session history, bu nedenle back button bounces kullanıcı straight back -e yönlendirme — bir loop. yap instead: kullanwindow.location.replace(), hangi drops kaynak -den history. - Reaching bençin bir JS yönlendirme on bir permanent, high-değer migration ne zaman bir 301 dır mevcut. JS yönlendirmeler dır yalnızca processed sonra rendering, hangi -ebilir olmak delayed veya başarısız ol outright — yanlış risk -e take on bir sayfa şu önem taşır. yap instead: kullan bir server-side 301; save JavaScript bençin constrained platforms ve SPA error sayfalar.
- Chaining JS yönlendirme -e başka bir yönlendirme yerine landing on final destination in bir hop. Chains waste tarama bütçesi ve -ebilir surface olarak bir yönlendirme error in GSC. yap instead: benşaret et JS yönlendirme straight at destination URL.
- Leaving kaynak URL in XML sitemap. Sitemaps -meli liste canonical, indexable URLs, değil yönlendiren ones. yap instead: kaldır kaynak -den sitemap once yönlendirme dır live.
- Letting
robots.txtblock script şu fires yönlendirme. eğer Googlebot -ebilir’t fetch JS, o -ebilir’t render yönlendirme, ve kaynak sayfa -ebilir sit dizine eklenmiş indefinitely. yap instead: yapğrula script dır crawlable — robots.txt tester kontroller tam olarak bu. - Assuming Hugo’s
aliases:frontmatter verir siz bir 301. o sahiptir historically generated bir meta refresh HTML sayfa, değil bir server-side yönlendirme — verify sizin deployed sürüm’s gerçek output yerine assuming. yap instead: kullan platform-level yönlendirme kurallar (Netlify_redirects, Cloudflare Workers, Vercelvercel.json) plusdisableAliases: true, olarak covered in Hugo SEO. - Treating
history.pushState()/replaceState()olarak bir yönlendirme. onlar yalnızca rewrite adres bar — no navigation, no HTTP sinyal, ve crawlers yapmayın izle them. yap instead: kullan bir gerçek<a href>bağlantı veya bir gerçek navigation bençin anything şu gerektirir -e olmak crawlable. - gösterme crawlers bir sayfa ve sending kullanıcılar somewhere else (cloaking). bu ne turns bir legitimate JS yönlendirme -e bir sneaky yönlendirmeler politika violation — o’s hakkında intent, değil technique. yap instead: send everyone, bots included, -e aynı destination.
yaygın sorunlar ile JavaScript yönlendirmeler
kaynak URL stays dizine eklenmiş uzun sonra yönlendirme went live
- muhtemel neden ol: sayfa dır hâlâ sitting in Google’s render queue, veya rendering failed outright.
- düzelt + kontrol et: çalıştır bir Live test et in Google arama Console’s URL
Inspection araç on kaynak URL. eğer o hasn’t rendered henüz, wait — Google
verir no düzeltilmiş timeline bençin render queue, bu nedenle recheck periodically rather
-den assuming bir specific window. eğer rendering keeps failing, yapğrula
yönlendirme script değildir blocked (see
robots.txtsorun below).
back button döndürür straight -e yönlendiren sayfa
- muhtemel neden ol: yönlendirme kullanır
window.location.hrefveya.assign()yerine.replace(), bu nedenle kaynak URL stays in session history. - düzelt + kontrol et: switch script -e
window.location.replace(). yapğrula tarafından landing on destination ve pressing back — o -meli skip yönlendirme kaynak entirely.
GSC shows “Crawled – currently not indexed” yerine “Page with redirect”
- muhtemel neden ol: Google hasn’t rendered sayfa henüz, veya rendering dır failing bençin şu URL.
- düzelt + kontrol et: tarama URL ile bir JS-rendering crawler (Screaming Frog veya
Ahrefs site denetimi, rendering enabled) -e yapğrula yönlendirme aslında fires
client-side. ayrıca kontrol et şu yönlendirme script değildir blocked in
robots.txt— robots.txt tester confirms whether Googlebot -ebilir fetch o.
bir unresolved SPA route shows up olarak bir soft 404 in GSC
- muhtemel neden ol: route yönlendirmeler somewhere, ama destination yapmaz
aslında döndür bir HTTP
404status. - düzelt + kontrol et: benşaret et yönlendirme at bir endpoint şu genuinely responds
ile
404(Google’s endorsed pattern), o hâlde re-çalıştır URL Inspection -e see status change -den soft 404 -e bir temiz 404.
bir JS-yönlendiren sayfa hâlâ görünür like bir plain 200 in bir tarama rapor
- muhtemel neden ol: crawler ran olmadan JavaScript rendering enabled, bu nedenle o yalnızca saw initial HTML response, değil client-side navigation.
- düzelt + kontrol et: re-tarama ile JS rendering turned on (bir 5-ikinci timeout minimum dır bir reasonable başlangıç benşaret et) ve yapğrula yönlendirme now shows up.
Proving yönlendirme aslında took effect
| test et -e çalıştır | beklenen sonuç | başarısızlık interpretation | izleme window | Rollback trigger |
|---|---|---|---|---|
| robots.txt tester on yönlendirme script’s URL | Script dır Allowed bençin Googlebot | Disallowed — Google -ebilir’t fetch script, bu nedenle o -ebilir never render yönlendirme | Immediate | düzelt veya kaldır blocking robots.txt kural önce relying on yönlendirme |
| tarama kaynak URL ile JS rendering enabled (Screaming Frog / Ahrefs site denetimi) | Crawler raporlar bir client-side navigation -e intended destination | sayfa hâlâ raporlar bir plain 200 ile no navigation — rendering değildir firing | Immediate (tek tarama) | eğer o hâlâ yapmaz fire sonra düzeltme robots.txt, kullan bir 0-ikinci meta refresh veya server-side yönlendirme instead |
| GSC URL Inspection — Live test et on kaynak URL | Rendered sonuç shows yönlendirme executing -e destination | Rendering fails, veya rendered HTML shows no navigation | Immediate bençin live test et itself | eğer Live test et repeatedly fails -e render, ele al bu platform olarak unable -e support bir JS yönlendirme — al server access veya kullan meta refresh |
| GSC — sayfa dizine ekleme rapor bençin kaynak URL | kaynak URL dır listed altında “Page with redirect” | hâlâ shows olarak dizine eklenmiş, “Crawled – currently not indexed,” veya yinelenen bençerik | 2–4 weeks (dizine ekleme status updates on Google’ın kendi schedule) | eğer hâlâ değil classified olarak bir yönlendirme sonra 4+ weeks, revisit render-blocking kontroller above |
| Manual back-button kontrol et in bir browser sonra landing on destination | Back button skips kaynak sayfa entirely | Back button döndürür -e kaynak sayfa | Immediate | Switch script -den .href/.assign() -e window.location.replace() |
test et yourself: JavaScript yönlendirmeler
Five quick questions on nasıl JavaScript yönlendirmeler çalışır ve ne zaman -e kullan them. seç bir yanıt her biri bençin, o hâlde kontrol et.
kaynaklar worth sizin time
benim related yazma
- JavaScript SEO sorunlar & en iyi Practices — rendering side, bu da neden JS yönlendirmeler carry onların timing risk.
- Beginner’s rehber -e teknik SEO — nerede yönlendirmeler ve rendering fit in bigger picture.
benim speaking
- nasıl arama çalışır (SlideShare) — benim walkthrough of tarama, rendering, dizine ekleme, ve sıralama — pipeline şu yapar bir JS yönlendirme bir phase-three event. (benim standing disclaimer uygulanır: “This is my understanding of systems… not going to be 100% complete or accurate.”)
-den yaklaşık industry
- yönlendirmeler ve Google arama (Google arama Central) — resmî preference hierarchy ve permanent-vs-temporary handling.
- Sneaky yönlendirmeler (Google arama Central) — spam-politika line şu separates bir legitimate yönlendirme -den cloaking.
- JavaScript yönlendirmeler & SEO: ne zaman & nasıl -e kullan Them (arama motoru Journal) — practical implementation rehberlik ve
replace()vs.hrefdistinction. - dır JavaScript yönlendirmeler SEO-Friendly? (arama motoru Journal) — “avoid when alternatives exist” özet.
- JavaScript yönlendirmeler ve SEO: Ultimate rehber (OnCrawl) — head-placement rehberlik, detection tooling, ve full Gary Illyes quote.
- dır JavaScript yönlendirmeler Bad bençin SEO? (Conductor) — bir concise FAQ-style yanıt bençin informational sorgu.
- bir rehber -e yönlendirme Types (Lumar) — broader yönlendirme taxonomy ile JS yönlendirmeler in context.
Değişiklik günlüğü
8 Ağu 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
18 Tem 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.