HTTP 302 Found nedir? 302 kodu, 302 vs 301 ve 302 hatası
Önemli bilgi
HTTP 302 Found geçici bir yönlendirmedir, hata değildir: sunucu, sayfanın şimdilik Location başlığında verilen başka bir URL'de olduğunu söyler. Tarayıcı bu URL'yi hemen yükler; bağlantılar ve arama motorları ise özgün URL'yi korur. Kalıcı taşımalar için 301 veya 308 kullanın: incelediğimiz 20 büyük siteden hiçbiri bunun için 302 kullanmıyordu. 302 ile çoğunlukla bir sayfa giriş gerektirdiğinde karşılaşırsınız. Tarayıcılar 302'yi izlerken POST isteğini GET'e çevirir: yöntemi korumak için 307, bir formdan sonra ise 303 kullanın.
Şimdi kontrol edin

Okumaya başlayın
- 302 Durum Kodu Nedir?
- 302 Yanıtının Yapısı
- 200 Yerine Neden 302 Alıyorum?
- 302 vs 301 vs 307 vs 308: Hangi Yönlendirmeyi Kullanmalısınız?
- 302 Yönlendirmesi Ne Zaman Kullanılmalı?
- 302 Durum Kodu Nasıl Gönderilir
- 302 Durum Kodu Nasıl Test Edilir
- 302 Yönlendirmeleri ve SEO
- 302 Neden POST İsteklerini GET'e Çevirir
- Sık Görülen 302 Hataları ve Çözümleri
- 302 Yönlendirme Döngüleri: Nasıl Teşhis Edilir
- 302 Durum Kodu İçin En İyi Uygulamalar
- Tarayıcılar ve Araçlar 302'yi Nasıl Ele Alır
- Sıkça Sorulan Sorular
302 Durum Kodu Nedir?
HTTP 302 Found geçici bir yönlendirmedir. Sunucu "istediğiniz şey şimdilik başka bir yerde" der ve diğer URL'yi Location başlığında belirtir. Tarayıcı bu URL'yi hemen yükler; ancak yer imleri, bağlantılar ve arama motorları özgün URL'yi kullanmayı sürdürmelidir (RFC 9110 §15.4.3).
Bu "şimdilik", eski URL'nin kalıcı olarak gittiğini söyleyen 301 Moved Permanently ile aradaki tüm farktır. HTTP/1.0 302'ye "Moved Temporarily" diyordu (RFC 1945); RFC 2616 onu 1999'da "Found" olarak yeniden adlandırdı, ancak anlamı değişmedi.
Ziyaretçi olarak 302'yi nadiren görürsünüz, çünkü tarayıcı ekranda bir şey belirmeden önce onu izler. Onunla DevTools'ta, curl'de, API istemcilerinde ve SEO denetimlerinde karşılaşırsınız.
Her yönlendirmeyi ve durum kodunu görün
302 Yanıtının Yapısı
302 yanıtı küçüktür. Parçaları:
- Durum satırı —
HTTP/1.1 302 Foundya da yalnızcaHTTP/2 302(HTTP/2'de neden ifadesi yoktur) - Location — gidilecek URL. RFC 9110, sunucunun bunu göndermesi gerektiğini söyler (SHOULD); olmazsa tarayıcının gidecek yeri kalmaz ve 302'nin kendi gövdesini, genellikle boş bir sayfayı gösterir
- Gövde — RFC 9110, gövdenin "genellikle kısa bir hipermetin notu" içerdiğini ve bir bağlantı verdiğini söyler. Tarayıcılar onu yok sayar; nginx, Apache ve Express varsayılan olarak tek satırlık bir not gönderir, birçok büyük site ise boş gövde gönderir
- Önbellek başlıkları — gerekmez. Siz
Cache-Control: max-ageveyaExpireseklemedikçe tarayıcılar 302'yi önbelleğe almaz; buna karşılık 301 ve 308 varsayılan olarak önbelleğe alınır. Bir CDN yine de onu önbelleğe alabilir (aşağıdaki "Takılıp kalan 302" bölümüne bakın)
HTTP/1.1 302 Found
Location: https://www.example.com/login?next=%2Fdashboard
Content-Length: 0
Date: Mon, 26 Oct 2026 14:00:00 GMTLocation tam bir URL ya da /login gibi göreli bir yol olabilir: RFC 9110 her URI referansına izin verir ve tarayıcılar onu istedikleri URL'ye göre çözer. Uygulama kodunda (örneğin Express) göreli yol, bir proxy'nin arkasında iç ana makine adını veya http:// değerini sızdırmaz; nginx ve Apache ise absolute_redirect off veya RedirectRelative On ayarlamazsanız onu yine de mutlak URL'ye çevirir.
200 Yerine Neden 302 Alıyorum?
Çünkü sayfa, isteğinizin getirmediği bir şey istiyor ya da kullandığınız URL sitenin sunduğu URL değil. Olağan nedenler:
- Oturum açmadınız — giriş arkasındaki sayfalar, istediğiniz sayfayı bir dönüş parametresinde taşıyarak giriş sayfasına 302 ile yanıt verir. Oturum kapalıyken
github.com/settingssizi/login?return_to=…adresine yönlendirir. curl'de veya bir API istemcisinde oturum çerezini ya da belirteci gönderin. - İstemciniz yönlendirmeleri izlemiyor — tarayıcılar,
fetch()ve Python requests bunları otomatik izler. curl-Leklemediğiniz sürece izlemez; 302'de durur ve yalnızca gövdesini, çoğu zaman hiçbir şeyi yazdırır (durumu ve Location'ı görmek için-iekleyin). - URL, sitenin sunduğu URL değil — eksik ya da fazla bir sondaki eğik çizgi, bir dil yolu veya sizi başka yere atan bir izleme bağlantısı. Express'in
res.redirect()işlevi, nginx'in yalnızca URL verilenreturnkomutu ve Apache'ninRedirectyönergesi aksi belirtilmedikçe 302 gönderir. - Sunucunun önündeki bir şey ekliyor — kaynak sunucu doğrudan denediğinizde 200 veriyor, ancak herkese açık URL 302 veriyorsa yönlendirmeyi bir CDN, yük dengeleyici veya proxy kuralı yapıyordur.
API'ler eksik girişe genellikle yönlendirme yerine 401 Unauthorized ile yanıt verir. Her adımı ve durum kodunu görmek için URL'yi Yönlendirme Kontrolü ile çalıştırın.
302 vs 301 vs 307 vs 308: Hangi Yönlendirmeyi Kullanmalısınız?
Beş yönlendirme kodu hemen her durumu kapsar. İki açıdan ayrılırlar: taşıma kalıcı mı ve POST, POST olarak kalıyor mu:
| Kod | Kalıcı mı? | Tarayıcılarda POST | Varsayılan olarak önbelleğe alınır mı? | En uygun kullanım |
|---|---|---|---|---|
| 301 Moved Permanently | Evet | GET olur | Evet | Kalıcı URL değişiklikleri, alan adı taşımaları |
| 302 Found | Hayır | GET olur | Hayır | Girişler, kısa süreli taşımalar, A/B testleri |
| 303 See Other | Hayır | GET olur | Hayır | Bir form gönderildikten sonraki sayfa |
| 307 Temporary Redirect | Hayır | POST kalır | Hayır | Yöntemi koruması gereken geçici taşımalar |
| 308 Permanent Redirect | Evet | POST kalır | Evet | Yöntemi koruması gereken kalıcı taşımalar |
303 ve 307, 302 yüzünden vardır. HTTP/1.1, 303'ü 1997'de ekledi; 1999'da RFC 2616 "mevcut kullanıcı aracısı uygulamalarının çoğunun 302'yi 303 yanıtıymış gibi ele aldığını" kabul etti, 307'yi ekledi ve 302'yi "Found" olarak yeniden adlandırdı (RFC 2616 §10.3.3). Geçici bir yönlendirme POST alabiliyorsa onu korumak için 307, sonraki sayfayı GET ile yüklemek için 303 kullanın.
302 Yönlendirmesi Ne Zaman Kullanılmalı?
Yönlendirmenin ortadan kalkmasını bekliyorsanız 302 kullanın. Tipik durumlar:
- Giriş yönlendirmeleri — oturumu kapalı bir kullanıcıyı
/dashboardsayfasından/loginsayfasına, giriş yaptıktan sonra da geri göndermek - A/B testleri — bazı ziyaretçileri bir varyant sayfaya göndermek; Google'ın kendi test önerisi burada 301 değil 302 kullanmanızı söyler (Google Search Central)
- Onarımdaki sayfalar — bir sayfa yeniden yapılırken ziyaretçileri birkaç günlüğüne bir duyuru sayfasına göndermek
- Kısa ömürlü kampanya URL'leri —
/black-fridayadresini yalnızca indirim süresince bu yılın indirim sayfasına yönlendirmek - Bakım — yalnızca ziyaretçiler için; arama motorları için planlı kesintide daha iyi yanıt Retry-After ile 503 kodudur
Bunlardan herhangi biri kalıcı hale gelirse 301'e geçin.
302 Durum Kodu Nasıl Gönderilir
Çoğu sunucu ve çatının 302 göndermek için tek satırlık bir yolu vardır. Bunların her biri Location başlığıyla birlikte 302 Found gönderir; bir 302 için gereken de budur.
Nginx
nginx'te kodla birlikte return kullanın. Yalnızca URL verilen return da 302 gönderir (nginx belgeleri):
server {
listen 80;
server_name example.com;
# Temporary redirect (302 Found)
location /old-page {
return 302 https://example.com/new-page;
}
}Apache (.htaccess)
Apache'de Redirect (durum vermezseniz varsayılanı 302'dir) ya da [R=302,L] ile bir RewriteRule kullanın:
# Simple temporary redirect
Redirect 302 /old-page https://example.com/new-page
# Or with mod_rewrite for pattern matching
RewriteEngine On
RewriteRule ^maintenance$ /maintenance.html [R=302,L]Node.js (Express)
Express'in res.redirect() fonksiyonu, durum kodu verilmediğinde varsayılan olarak 302 kullanır:
// Temporary redirect (302 Found by default)
app.get('/dashboard', (req, res) => {
if (!req.user) {
return res.redirect('/login') // sends 302
}
// ...render dashboard
})
// Or be explicit:
res.redirect(302, '/login')302 Durum Kodu Nasıl Test Edilir
En hızlı kontrol, terminalde curl'dür: tarayıcı önbelleği araya girmeden durum kodunu ve Location başlığını gösterir.
# Status and headers, without following the redirect
curl -sI https://example.com/old-page
# -I sends HEAD, which some servers answer differently; this sends a real GET
curl -s -o /dev/null -D - https://example.com/old-page
# Expected:
# HTTP/2 302
# location: https://example.com/new-page
# Follow the whole chain and print each hop's status and Location
curl -sL -o /dev/null -D - https://example.com/old-page | grep -iE '^(HTTP/|location:)'Terminaliniz yok mu? DNS Robot'un Yönlendirme Kontrolü aracı her adımı (301, 302, 303, 307, 308 ve meta refresh) sunucumuzdan izler, her durum kodunu ve son URL'yi gösterir; HTTP Başlık Kontrolü ise Redirects altında her adımın ham başlıklarını gösterir.
302 Yönlendirmeleri ve SEO
Google iki tür yönlendirmeyi farklı talimatlar olarak ele alır. Geçici bir yönlendirmeyi (302, 303, 307) Googlebot izler, ancak Google bunu hedefin kanonik URL olması gerektiğinin işareti saymaz; bu yüzden kaynak sayfa normalde arama sonuçlarında kalır. Başka sinyaller hedefi gösteriyorsa hedef yine de dizine eklenebilir (Google Search Central).
Kalıcı bir yönlendirme (301, 308) tersini söyler: yeni URL'yi göster. Dolayısıyla asıl soru "302 PageRank aktarır mı?" değil, "arama sonuçlarında hangi URL'yi görmek istiyorum?" sorusudur. rel=canonical etiketiniz diğer sinyallerden biridir; Meta Etiket Kontrol Aracı bir sayfanın hangi URL'yi bildirdiğini gösterir.
- Kalıcı taşımalar için 301 veya 308 kullanın — yeni alan adı, yeni URL yapısı, birleştirilen sayfalar
- Geçici olanlar için 302 kullanın — girişler, A/B testleri, kampanyalar
- Kalıcı bir taşımayı 302'de bırakmayın — Google eski URL'yi göstermeyi sürdürebilir
- Zincirleri kısa tutun — her adım bir gidiş-dönüş maliyeti getirir ve Googlebot varsayılan olarak en fazla 10 adım izler (Google)
302 Neden POST İsteklerini GET'e Çevirir
302'nin en şaşırtıcı yanı budur. İlk spesifikasyonlar istemcilerin yöntemi değiştirmesine hiç izin vermiyordu, ama tarayıcılar yine de 302'de POST'u GET'e çevirdi. Bugün tarayıcıların uyguladığı Fetch Standardı bu alışkanlığı yazıya döker: 301 veya 302'de POST, GET olur ve gövdesi atılır (Fetch Standard).
Yani tarayıcı POST /submit-form gönderip sunucu 302 Found ile yanıt verdiğinde tarayıcı GET /thank-you ile devam eder ve form verileri kaybolur. Tarayıcılar PUT ve DELETE'i olduğu gibi korur; diğer istemciler farklıdır: Python requests, 302'de HEAD dışındaki her yöntemi GET'e çevirir; curl -L ise 301, 302 ve 303'te POST'u GET'e çevirir (--post302 302'de POST'u korur).
# What you send:
POST /submit-form HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
name=Alice&email=alice@example.com
# Server responds with 302:
HTTP/1.1 302 Found
Location: /thank-you
# Browser follows with GET (form data dropped!):
GET /thank-you HTTP/1.1
Host: example.comYönlendirmenin özgün yöntemi korumasını istiyorsanız (POST, POST olarak; PUT, PUT olarak kalsın) bunun yerine 307 Temporary Redirect kullanın. Gövdeyi bilerek bırakıp GET'e geçmek istiyorsanız (klasik POST/Redirect/GET kalıbı) 303 See Other kullanın. İkisi de açıktır; 302 değildir.
Sık Görülen 302 Hataları ve Çözümleri
Bir 302 sorun çıkardığında genellikle şunlardan biridir:
- 200 yerine 302 — bir giriş duvarı, yönlendirmeleri izlemeyen bir istemci veya bir URL varyantı (yukarıdaki "200 yerine neden 302 alıyorum" bölümüne bakın)
- Location başlığı olmayan 302 — hiçbir şey onu izleyemez ve tarayıcı 302'nin kendi gövdesini, genellikle boş bir sayfayı gösterir. Durumu göndermeden önce
Locationayarlayın - Kendini gösteren 302 — bir yönlendirme döngüsü: kural kendi hedefinde de çalışır. Eksik koşulu ekleyin
- Verisini kaybeden form — POST → 302 → GET gövdeyi atar. Bir sonuç sayfasını bilerek göstermek için 303, POST'u korumak için 307 kullanın
- Takılıp kalan 302 — sunucu yanında
Cache-Control: max-ageveyaExpiresgönderdi, bu yüzden tarayıcılar onu önbelleğe aldı ya da CDN'iniz aldı (Cloudflare'in önbelleğe aldığı içerikte başlıklar aksini söylemedikçe 302'yi 20 dakika tutar, Cloudflare belgeleri). Bu başlıkları kaldırın, CDN önbelleğini temizleyin ve tarayıcı önbelleğini silin - Yerelde değil, canlıda çıkan 302 — çoğu zaman yönlendirme ekleyen bir CDN, yük dengeleyici veya proxy kuralıdır. Anlamak için kaynak sunucuyu doğrudan test edin
302 Yönlendirme Döngüleri: Nasıl Teşhis Edilir
Yönlendirme döngüsü, A URL'sinin sizi B'ye, B'nin de sizi tekrar A'ya göndermesidir. 20 yönlendirmeden sonra (Fetch Standardı'ndaki sınır) Chrome ERR_TOO_MANY_REDIRECTS ile, Firefox ise "Sayfa doğru bir şekilde yönlendirilmiyor" iletisiyle pes eder.
Klasik bir neden Cloudflare'in Flexible şifreleme modudur: Cloudflare sunucunuza düz HTTP ile ulaşır, sunucunuz HTTP'yi HTTPS'ye yönlendirir ve Cloudflare yine HTTP ile sorar (Cloudflare belgeleri).
# Trace the full redirect chain (limit to 10 hops to avoid infinite loops)
curl -ILs --max-redirs 10 https://example.com 2>&1 | grep -i 'HTTP/\|location:'
# Example of a loop:
# HTTP/2 302
# location: http://example.com/
# HTTP/1.1 302 Found
# Location: https://example.com/
# HTTP/2 302
# location: http://example.com/ <-- loop confirmedAynı URL Location içinde tekrar tekrar dönüyorsa, ister kendini göstersin ister iki URL sırayla birbirini göstersin, bir döngünüz var demektir (Cloudflare Flexible modunda https://example.com/ kendine yönlenir). Tam çözüm için ERR_TOO_MANY_REDIRECTS rehberimize bakın. DNS Robot'un Yönlendirme Kontrolü aracı zinciri sunucumuzdan izler ve döngüye girdiği yerde durur.
302 Durum Kodu İçin En İyi Uygulamalar
Birkaç alışkanlık 302 sorunlarının çoğunu önler:
- Her zaman Location başlığı gönderin — o olmadan hiçbir şey yönlendirmeyi izleyemez
- Önbellek başlıkları eklemeyin —
max-ageveyaExpiresolmayan bir 302 önbelleğe alınmaz, istediğiniz de budur - Proxy arkasındaki mutlak URL'lere dikkat edin — uygulama kodunda göreli bir
/login, Location'a iç ana makine adının veyahttp://değerinin sızmasını önler; nginx ve Apache mutlak URL'leri kendi ayarlarından üretir - Tek adımda tutun —
A → Bsorun değil;A → B → Cher ziyaretçi için bir gidiş-dönüş daha ekler - Bir POST'u başka sayfaya asla 302 ile yönlendirmeyin — sonuç sayfasını göstermek için 303, POST'u korumak için 307 kullanın
- Eski geçici yönlendirmeleri gözden geçirin — çoğu zaman nedenlerinden uzun yaşarlar. Onları Yönlendirme Kontrolü ile kontrol edin
- Bir taşıma kalıcı olur olmaz 301'e geçin
Tarayıcılar ve Araçlar 302'yi Nasıl Ele Alır
İstemciler 302'yi izleme konusunda hemfikirdir, ancak sınırlarda ve yöntemin akıbetinde ayrılırlar:
| İstemci | 302 ile ne yapar | Yönlendirme sınırı |
|---|---|---|
| Chrome, Edge, Firefox, Safari | Hemen izler; POST, GET olur | 20 (Fetch Standardı) |
| JavaScript'te fetch() | Varsayılan olarak izler (redirect: "follow"); POST için aynı kural | 20 |
| curl | İzlemez; yalnızca 302'nin gövdesini, çoğu zaman boş, yazdırır (durumu ve Location'ı görmek için -i veya -I ekleyin) | Yok (izlemez) |
| curl -L | İzler; POST, 301, 302 ve 303'te GET olur (--post301, --post302, --post303 onu korur) | 50 (--max-redirs) |
| wget | İzler | 20 (--max-redirect) |
| Python requests | İzler; HEAD dışındaki her yöntem GET olur | 30 |
| Googlebot | İzler; kaynak URL'yi arama sonucu olarak tutar | Varsayılan olarak 10 adım |
Tam ifade için RFC 9110'daki 302 tanımına ve MDN'nin 302 sayfasına bakın.
Herhangi bir yönlendirme zincirini saniyeler içinde takip edin
DNS Robot'un ücretsiz Yönlendirme Kontrolü, zincirdeki her adımı gösterir: durum kodları, Location başlıkları ve son hedef, tarafsız bir sunucudan (tarayıcı önbelleği olmadan).
Kaynaklar
- RFC 9110: HTTP Semantics, 302 Found, IETF
- Fetch Standard: HTTP-redirect fetch, WHATWG
- Redirects and Google Search, Google Search Central
- Configure cache by status code (default 20 minutes for 302), Cloudflare
Sıkça Sorulan Sorular
302 durum kodu ne anlama gelir?
200 yerine neden 302 alıyorum?
"302 hatası": gerçekten bir hata mı?
302, 301'den daha mı iyi?
302 yönlendirmesi SEO'ya zarar verir mi?
302 ile 307 arasındaki fark nedir?
302'den sonra POST isteğim neden GET oluyor?
302 yönlendirmeleri tarayıcılar tarafından önbelleğe alınır mı?
302 yönlendirmesini nasıl gönderirim?
Bir URL'nin 302 döndürüp döndürmediğini nasıl kontrol ederim?
İlgili Makaleler
İlgili Araçlar
Yönlendirme Kontrolü
SEO için URL yönlendirmelerini, yönlendirme zincirlerini ve HTTP durum kodlarını kontrol edin
HTTP Başlık Kontrolü
HTTP yanıt başlıklarını ve güvenlik başlıkları derecelendirmesini analiz edin
SSL Sertifika Kontrolü
SSL sertifika geçerliliğini ve güvenlik ayrıntılarını doğrulayın
DNS Sorgulama
Tüm DNS kayıtları alan adının kendi ad sunucularından, Google ve Cloudflare önbelleğiyle yan yana



