307 Geçici Yönlendirmesi

307 Geçici Yönlendirmesinin ne olduğunu, 302'den farklı olarak HTTP yöntemini nasıl kesin biçimde koruduğunu, HSTS ve geçici taşımalarda nerede göründüğünü ve Google'ın SEO açısından nasıl ele aldığını açıklar.

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

307 Geçici Yönlendirmesi Google için 302 ile aynı, zayıf ve geçici bir sinyaldir; kaynak URL'nin sıralamasını hedefe devretmek için bir neden oluşturmaz. 302'den gerçek farkı spesifikasyon garantisidir: 307 istek yöntemini ve gövdesini değiştiremez, bu nedenle istek yöntemi korunur. Bu formlar ve API'ler için önemlidir, sıradan GET sayfalarında ise önemsizdir. Tarayıcıda görülen ve çoğu kişiyi şaşırtan 307 ise bazen sunucunun hiç göndermediği, HSTS'nin HTTP'yi HTTPS'ye yükseltirken oluşturduğu sıfır baytlık tarayıcı artığıdır.

Kısa özet — RFC 9110’a göre 307, “istek yöntemini DEĞİŞTİRMEMELİDİR”; bu, 302’nin vermediği kesin garantidir. SEO açısından sonuçsuzdur: Google belgeleri onu “302 ile eşdeğer” (zayıf, geçici bir sinyal) diye listeler ve Mueller, 307 ile 302 arasındaki seçimin arama açısından “pek fark yaratmadığını” söylemiştir — mesele yönlendirmenin POST/API trafiğinde çalışması gerekip gerekmediğidir. İnsanları asıl şaşırtan 307, HSTS artifaktıdır: sunucunun hiç göndermediği, tarayıcı HTTP’yi kendi başına HTTPS’ye yükselttiğinde oluşan 0 baytlık, yalnızca tarayıcıya ait “yönlendirme”. İşlevsel olarak birbirinden kopuk iki durumu vardır; bütün mesele bunları ayırmaktır.

307’nin birbirinden tamamen farklı iki durumu vardır

Aşağıdaki her şeyi düzenleyen fikir budur ve doğrudan kendi durum kodları rehberimden gelir: 307 iki ayrı kayıt olarak yer alır: “307 Temporary Redirect – Has the same functionality as a 302 redirect, except you can’t switch between POST and GET” (çeviri) “307 Geçici Yönlendirme — 302 yönlendirmesiyle aynı işlevi görür, ancak POST ile GET arasında geçiş yapamazsınız” ve “307 HSTS Policy – Forces the client to use HTTPS when making requests instead of HTTP.” (çeviri) “307 HSTS Politikası — istemciyi isteklerde HTTP yerine HTTPS kullanmaya zorlar.” Aynı numarayı paylaşırlar ama başka neredeyse hiçbir şey paylaşmazlar:

  1. Gerçek, sunucu tarafından gönderilen geçici yönlendirme olarak 307 — GET dışı bir istekte HTTP yöntemini ve gövdesini korumak için bilerek seçilen (veya framework tarafından varsayılan olarak seçilen) kod.
  2. HSTS tarayıcı artifaktı olarak 307 — sunucu yanıtı değildir. Tarayıcı HTTP’yi dahili olarak HTTPS’ye yükseltir ve bu yükseltmeyi 307 olarak etiketler.

Bu ikisini birbirine karıştırmak, 307 karmaşasının en yaygın kaynağıdır. İkisini sırayla ele alacağım.

1. durum: gerçek 307 — spesifikasyonun gerçekten istediği

Güncel HTTP semantiği spesifikasyonu olan RFC 9110, §15.4.8’de açık ve nettir:

“The 307 (Temporary Redirect) status code indicates that the target resource resides temporarily under a different URI and the user agent MUST NOT change the request method if it performs an automatic redirection to that URI.” (çeviri) “307 (Temporary Redirect) durum kodu, hedef kaynağın geçici olarak farklı bir URI altında bulunduğunu belirtir ve kullanıcı aracısı bu URI’ye otomatik yönlendirme yaparsa istek yöntemini DEĞİŞTİRMEMELİDİR.”

Evidence for this claim RFC 9110 defines 307 Temporary Redirect as a temporary move and requires clients not to change the request method when following it automatically. Scope: HTTP semantics for real server 307 responses, not browser-internal HSTS displays. Confidence: high · Verified: IETF: RFC 9110 §15.4.8 — 307 Temporary Redirect

Bu “MUST NOT” kesin gerekliliktir, öneri değil. 307’nin çözmek için oluşturulduğu tarihsel karmaşayı açıkça belgeleyen 302 bölümüyle (§15.4.3) karşılaştırın: “For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 307 (Temporary Redirect) status code can be used instead.” (çeviri) “Tarihsel nedenlerle kullanıcı aracısı sonraki istekte yöntemi POST’tan GET’e DEĞİŞTİREBİLİR. Bu davranış istenmiyorsa yerine 307 (Temporary Redirect) kullanılabilir.” Başka deyişle 307, eski istemcilerin 302’deki POST→GET belirsizliğini kaldırmak için vardır.

MDN aynı ayrımın pratik açıklamasını şöyle verir:

“The difference between 307 and 302 is that 307 guarantees that the client will not change the request method and body when the redirected request is made. With 302, older clients incorrectly changed the method to GET. 307 and 302 responses are identical when the request method is GET.” (çeviri) “307 ile 302 arasındaki fark, yönlendirilmiş istek yapılırken 307’nin istemcinin yöntem ve gövdeyi değiştirmemesini garanti etmesidir. 302’de eski istemciler yöntemi yanlışlıkla GET’e çevirdi. İstek yöntemi GET olduğunda 307 ve 302 yanıtları aynıdır.”

Son cümle SEO için en önemli olandır. SEO uzmanlarının ilgilendiği eski sayfadan yeni sayfaya yönlendirmelerin neredeyse tamamı GET isteğidir ve GET’te 307 ile 302 birebir aynıdır. Yöntem koruma garantisi yalnızca yöntem GET değilse önem taşır: form yeniden gönderimleri, API uç noktaları, webhook hedefleri, ödeme veya kimlik doğrulama POST geçişleri. Spesifikasyon yöntem ve gövdeyi garanti eder; tekrar sırasında bütün istemcilerin başlık, kimlik bilgisi veya kaynaklar arası isteği nasıl işleyeceğini tek başına belirlemez. Bayt düzeyinde davranış varsaymak yerine gerçek istemcinizle doğrulayın. Sıradan sayfa taşımasında iki kodu karşılaştırıyorsanız ayrıntılı 302-307 makalesine bakın; bu makale 302 incelemesindeki temel geçici yönlendirme bilgisini varsayar ve 307’ye özgü farklara odaklanır.

Tek tabloda 302, 303 ve 307 karşılaştırması

Üçü de RFC’nin “geçici” grubundadır; ancak önemli iki eksende — yöntemin korunması ve önbellekleme — aynı davranmazlar:

KodOtomatik yönlendirmedeki yöntemSezgisel olarak önbelleğe alınabilir mi?
302 FoundPOST’u GET’e çevirebilir (tarihsel istemci davranışı; RFC gereği değildir)Hayır
303 See OtherHedefi bilerek GET veya HEAD ile alırHayır
307 Temporary RedirectYöntemi DEĞİŞTİRMEMELİDİRHayır

Üç kodun hiçbiri varsayılan olarak sezgisel biçimde önbelleğe alınabilir değildir — 307 (302 ve 303 gibi), bir önbelleğin yeniden sormadan saklaması için açık bir tazelik sinyaline (Cache-Control, Expires vb.) ihtiyaç duyar.

1. durum devamı: Google gerçek 307’yi SEO açısından nasıl ele alır

Kısa cevap: 302 ile tamamen aynı. Google’ın HTTP Durum Kodları belgesi 307 satırını “302 ile eşdeğer” diye listeler ve miras aldığı 302 satırı bunun anlamını açıklar:

“By default, Google’s crawlers follow the redirect, and Google systems use the redirect as a weak signal that the redirect target should be processed.” (çeviri)

“Google tarayıcıları varsayılan olarak yönlendirmeyi izler ve Google sistemleri yönlendirmeyi, yönlendirme hedefinin işlenmesi gerektiğine dair zayıf bir sinyal olarak kullanır.”

“Zayıf” burada belirleyici sözcüktür: geçici yönlendirme, kalıcı yönlendirme gibi kanonikleştirmeyi hedef üzerinde birleştirmez. Google’ın Yönlendirmeler ve Google Search belgesi 302, 303 ve 307’yi “geçici” başlığı altında toplar ve davranışı açıkça tarif eder: “Googlebot follows the redirect, but the indexing pipeline doesn’t use the redirect as a signal that the redirect target should be canonical.” (çeviri) “Googlebot yönlendirmeyi izler, ancak dizine ekleme hattı yönlendirmeyi hedefin kanonik olması gerektiğine dair bir sinyal olarak kullanmaz.” Aynı sayfadaki amaç çerçevesi de şöyledir: “If you just want to send users to a different page temporarily, use a temporary redirect.” (çeviri) “Kullanıcıları yalnızca geçici olarak farklı bir sayfaya göndermek istiyorsanız geçici yönlendirme kullanın.”

Evidence for this claim Google's indexing pipeline does not use a temporary 302, 303, or 307 redirect as a signal that the redirect target should be canonical. Scope: redirect crawling, indexing, and canonicalization Confidence: high · Verified: Redirects and Google Search

Google, 307 ve 308 satırlarının hemen ardından duvara yazılacak şu uyarıyı ekler:

“While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (çeviri)

“Google bu durum kodlarını aynı şekilde ele alsa da semantik olarak farklı olduklarını unutmayın. Diğer istemcilerin (örneğin e-okuyucuların ve diğer arama motorlarının) yararlanabilmesi için yönlendirmeye uygun durum kodunu kullanın.”

Google 307 ve 302’yi sıralama açısından aynı gruba koyar, ancak anlamsal olarak doğru kodu seçmenizi ister. SEO yanıtının tamamı budur. Evidence for this claim Google treats 307 as equivalent to 302 for Search while noting that the HTTP semantics differ. Scope: Google Search redirect handling; clients still need the semantically appropriate status code. Confidence: high · Verified: Google: HTTP status codes and Search John Mueller, Search Off the Record 51. bölümünde (“Let’s talk redirects”) 301/302’nin aksine “with 307, 308, it also forwards POST requests” (çeviri) “307 ve 308 ile POST isteklerinin de iletildiğini” söyleyip sonucu daha açık ifade eder:

“I think for SEO, it doesn’t really matter. It’s more like, I don’t know… Does it work for APIs or not? And usually, APIs are not something that you need to have indexed directly in Search.” (çeviri)

“Bence SEO açısından gerçekten önemli değil. Daha çok, bilmiyorum… API’lerde çalışıyor mu, çalışmıyor mu? Genellikle API’ler Search’te doğrudan dizine eklemeniz gereken şeyler değildir.”

Geçici yönlendirmelerinizi 307’ye çevirmenin sıralama açısından bir artısı yoktur. Bunu seçmenin tek geçerli nedeni yöntem/gövdeyi korumak veya ileride güvenli kalmasını isteyen genel bir tercihtir; buna sonda döneceğim.

1. durum devamı: framework ve CDN varsayılanları

“Bu neden 307?” sorularının artan bölümü bilinçli seçim değil, framework varsayılanıdır. Next.js redirect() işlevi varsayılan olarak 307 döndürür ve belgeler “Why does redirect use 307 and 308?” başlığı altında nedenini açıklar: “The redirect() method uses a 307 by default, instead of a 302 temporary redirect, meaning your requests will always be preserved as POST requests.” (çeviri) “redirect() yöntemi 302 geçici yönlendirme yerine varsayılan olarak 307 kullanır; böylece istekleriniz her zaman POST olarak korunur.” Next.js Server Actions içinde özellikle 303, 308 için ayrı permanentRedirect() kullanır. Elinizle yazmadığınız 307 görüyorsanız framework veya edge platformunun GET dışı yönlendirmelerde bunu varsayılan seçip seçmediğini kontrol edin; çoğunlukla yanıt budur ve doğrudur.

2. durum: sunucunuzun hiç göndermediği HSTS “hayalet 307”

Bu, yeterince ele alınmayan ve özel bir 307 yazısının gerçekten değer kattığı alandır. Site Strict-Transport-Security (HSTS) başlığı gönderdiğinde tarayıcıya bundan sonra yalnızca HTTPS üzerinden yükleme yapmasını söyler. HTTP sürümüne yapılan sonraki istekte tarayıcı sunucuyla konuşmadan HTTPS’ye kendi başına yükseltme yapar ve bu dahili yükseltmeyi geliştirici araçlarında ve tarayıcılarda “307” diye gösterir.

John Mueller bu mekanizmayı kişisel sitesinde şöyle açıkladı:

“After seeing the HTTPS URL with the HSTS header (for example, with any redirect from the HTTP version), Chrome will act like it’s seeing a 307 redirect the next time you try to access the HTTP page. Your server’s not returning a 307, Chrome is just showing it to you as such to explain that it’s doing the redirect for you.” (çeviri) “HTTPS URL’sini HSTS başlığıyla gördükten sonra Chrome, HTTP sayfasına bir sonraki erişimde 307 yönlendirmesi görüyormuş gibi davranır. Sunucunuz 307 döndürmüyor; Chrome yönlendirmeyi sizin için yaptığını açıklamak üzere size öyle gösteriyor.”

Sıfır baytlık gövde ayırt edici işarettir. Mueller’in eklediği gibi “the 307 isn’t actually a redirect at all, it’s just a placeholder” (çeviri) “307 aslında yönlendirme değildir, yalnızca yer tutucudur”. Kendi yönlendirmeler rehberim denetim sonucunu şöyle anlatır: “When web servers require clients to only use HTTPS connections (HSTS policy), Google won’t see the 307 because it’s cached in the browser. The initial hit (without cache) will have a server response code that’s likely a 301 or a 302. But your browser will show you a 307 for subsequent requests which makes it more difficult to troubleshoot. You will need to use a fresh Incognito session to see the returned status code.” (çeviri) “Web sunucuları istemcilerin yalnızca HTTPS kullanmasını istediğinde Google, tarayıcıda önbelleğe alındığı için 307’yi görmez. Önbelleksiz ilk istekte sunucu muhtemelen 301 veya 302 döndürür; sonraki isteklerde tarayıcı 307 göstererek sorun gidermeyi zorlaştırır. Dönen kodu görmek için yeni bir Gizli oturum gerekir.”

Googlebot HSTS için gerçekte ne görür (ve anlatı nasıl değişti)

Beş yıl arayla yapılan iki Google açıklamasını birlikte okuyun. Aralık 2015’te Zineb Ait Bahajji (o dönemde Google’da), Search Engine Roundtable üzerinden “With HSTS implemented, Googlebot sees a 301 redirect (try it with Fetch as Google). The 307 is just an ‘internal redirect’.” (çeviri) “HSTS uygulandığında Googlebot 301 yönlendirmesi görür (Fetch as Google ile deneyin). 307 yalnızca dahili yönlendirmedir.” dedi. Ekim 2020’de Mueller’in Search Engine Journal üzerinden aktarılan Ask Google Webmasters videosundaki ifade biraz farklıydı: “In short, [Googlebot] doesn’t interact with them. 307 redirects are generally not real redirects.” (çeviri) “Kısaca Googlebot bunlarla etkileşmez. 307 yönlendirmeleri genellikle gerçek yönlendirme değildir.” Her iki durumda da tarayıcı, geliştirici araçlarındaki 307 ile aynı şeyi görmez. Araçlar ve tarama altyapısı değişse de (Fetch as Google yerini URL Inspection’a bıraktı) temel nokta en az on yıl değişmedi: HSTS durumunda sunucunun döndürdüğü gerçek 307 yoktur. Güncel rehber olarak 2020 açıklamasını, tarihsel bağlam olarak 2015 açıklamasını kullanın.

Operasyonel sonuç önemlidir: HSTS tarayıcı kolaylığıdır, tarama keşif mekanizması değildir. Site sahipleri HTTP→HTTPS yolunun crawler’lar için de çalışmasını istiyorsa gerçek bir sunucu tarafı yönlendirmesine (gerçek bir 301) ihtiyaç duyar.

Bing 307’yi nasıl ele alır

Dürüst cevap: belgelerde boşluk var. Bing’in 307’yi veya özellikle HSTS kaynaklı 307’yi ele alan kamuya açık bir açıklamasını bulamadım. Bing’in yönlendirme rehberleri (2011 tarihli 301, 302 ve canonical etiketlerini yönetme yazısı ile 2020 tarihli Bing ile Site Taşıma yazısı) yalnızca 301/302 kalıcı-geçici ayrımını kapsıyor; 307, 308 veya HSTS’den söz etmiyor. Bu nedenle Google ile aynı olduğunu varsaymayın: Bing kamuya açık biçimde 307’ye özel bir şey söylemedi. Olay, arama motorundan bağımsız olarak gerçek ve tarayıcı yazılımları açısından önemlidir — Screaming Frog SEO Spider’ın HSTS’yi dikkate alan “Respect HSTS Policy” (çeviri) “HSTS Politikasına Uyun” seçeneği sunması bunun göstergesidir — ancak bu Bing açıklaması değil, araç belgesidir.

Bilerek 307 ne zaman seçilir

Özgün yöntemi veya gövdeyi kaybetmek bir şeyi bozacaksa 302 yerine 307 seçin:

  • POST/PUT/PATCH alan API uç noktaları ve webhook hedefleri.
  • İşlendikten sonra yönlendiren form gönderimleri (POST).
  • Sunucular arasındaki ödeme veya giriş POST geçişleri.
  • **İsteğin kaybetmeyi göze alamayacağınız bir gövde taşıdığı her durum.

Sıradan bir sayfadan sayfaya geçişte 302 ve 307, Google açısından ayırt edilemez; SEO ekseninde ikisi de uygundur. Bu yöntem-koruma mantığının kalıcı karşılığını ele alıyorsanız ilişki 301 ile 308 arasındadır: 307, 302 için neyse 308 de 301 için odur.

Kendi yönlendirmeler rehberimdeki tercihim, “fark etmez” yanıtından daha kesindir: “my preferred order would be: 307 / 302 / 303 > Meta refresh 0 / HTTP refresh 0.” (çeviri) “Tercih sıram 307 / 302 / 303 > Meta refresh 0 / HTTP refresh 0 olurdu.” Geçici seçeneklerde 307’yi ilk sıraya koyarım; tutarlı kullanmak yöntem koruma açısından güvenli kalmanızı sağlar ve Mueller’in eksiksizlik argümanına benzer. Hangisini seçerseniz seçin gerçek 307’nin veya HSTS artefaktının uzun yönlendirme zincirinde fazladan sıçrama olmasını önleyin; her sıçrama gecikme ve verim kaybıdır.

Try it live

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

Open in new tab ↗

Add an expert note

Pin an expert quote

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