HTTP 302 Durum Kodu (302 Found): Anlamı ve Ne Zaman Kullanılır

Advertisement
HTTP 302 Durum Kodu Nedir?
HTTP 302 durum kodu — resmi adıyla 302 Found — istemciye (genellikle bir tarayıcıya) istenen kaynağın geçici olarak farklı bir URL'ye taşındığını bildiren bir HTTP yanıt kodudur. Yeni URL, yanıtın Location başlığında belirtilir ve istemci kaynağı yalnızca bu istek için oradan getirir.
Taşıma geçici olduğundan, istemci gelecekteki istekler için orijinal URL'yi kullanmaya devam etmelidir. Arama motorları, tarayıcılar ve yer imleri orijinal URL'yi yönlendirme hedefiyle değiştirmemelidir. Bu, HTTP 302 ile 301 Moved Permanently arasındaki en önemli davranış farkıdır.
302 kodu, RFC 9110'da tanımlanan HTTP durum kodlarının 3xx yönlendirme sınıfında yer alır. Tarihsel adı 'Found' olmasına rağmen, yanıt gövdesi neredeyse hiç kullanılmaz — modern tarayıcılar Location başlığını işlemeden hemen takip eder.
302 Yanıtının Yapısı
HTTP 302 durum kodu yanıtı her zaman iki temel öğe içerir: durum satırının kendisi ve yeni URL'yi gösteren bir Location başlığı. Geçerli bir Location başlığı olmadan istemci yönlendirmeyi takip edemez.
Durum satırı —
HTTP/1.1 302 Found(HTTP/2'deHTTP/2 302)Location başlığı — istemcinin takip etmesi gereken hedef URL (zorunlu)
Cache-Control — genellikle
no-cache— tarayıcıların yönlendirme hedefini kalıcı olarak önbelleğe almaması içinGövde — genellikle boş; sunucular eski istemciler için küçük bir HTML sayfası ekleyebilir (
<html><body><a href="...">Buraya tıklayın</a></body></html>)
HTTP/1.1 302 Found
Location: https://www.example.com/new-page
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Cache-Control: no-cache, no-store
Date: Mon, 27 Apr 2026 14:00:00 GMTLocation başlığı mutlak URL (https://example.com/path) veya yola göreli URL (/path) olabilir. Modern HTTP istemcileri her ikisini de kabul eder, ancak netlik için mutlak URL'ler önerilir.
302 vs 301 vs 307 vs 308: Hangi Yönlendirmeyi Kullanmalı?
HTTP beş yaygın yönlendirme durum kodu tanımlar ve doğrusunu seçmek önbellek, SEO ve istek metodu korunumu için önemlidir. Bu tabloyu karar matrisi olarak kullanın:
| Kod | Süreklilik | Metot Korunur mu? | Tarayıcı Önbelleğe Alır mı? | En Uygun Kullanım |
|---|---|---|---|---|
| 301 Moved Permanently | Kalıcı | POST→GET olabilir | Evet (agresif) | Kalıcı URL değişiklikleri, alan göçleri |
| 302 Found | Geçici | Genellikle POST→GET olur | Hayır | Giriş akışları, A/B testleri, bakım |
| 303 See Other | Geçici | Her zaman GET'e döner | Hayır | Form gönderimi sonrası POST/Redirect/GET deseni |
| 307 Temporary Redirect | Geçici | Evet — korunur | Hayır | POST/PUT korunması gereken geçici yönlendirmeler |
| 308 Permanent Redirect | Kalıcı | Evet — korunur | Evet | POST/PUT korunması gereken kalıcı yönlendirmeler |
Modern öneri: Geçici bir yönlendirmeye ihtiyacınız varsa ve metot işleme konusunda net olmak istiyorsanız 302 yerine 307 kullanın. 307 kodu HTTP/1.1'e tam olarak şu nedenle eklendi: tarayıcılar tarihsel olarak 302'de POST'u GET'e değiştirerek spesifikasyonu ihlal ediyordu — ve bu yanlış davranış o kadar yaygındı ki fiili standart oldu.
302 Yönlendirmeyi Ne Zaman Kullanmalı?
Yönlendirme gerçekten geçici olduğunda — yani gelecekte yönlendirme hedefini kaldırmayı veya değiştirmeyi planladığınızda — HTTP 302 durum kodunu kullanın. Yaygın meşru kullanım örnekleri:
Giriş yönlendirmeleri — Kimlik doğrulanmamış kullanıcıyı
/dashboard'dan/login'e gönderme, sonra giriş sonrası geri döndürmeA/B testi — Kanonik URL'yi değiştirmeden kullanıcıların %50'sini bir varyanta yönlendirme
Bakım sayfaları — Sunucuya yama uygularken tüm trafiği geçici olarak
/maintenance'a yönlendirmeCoğrafi konum yönlendirmesi — Ziyaretçileri ülkesine göre
/'den/trveya/us'ye gönderme;/'yi kanonik giriş olarak korumaMobil yönlendirmeler — Akıllı telefon kullanıcılarını
example.com'danm.example.com'a yönlendirme (bugün duyarlı tasarım tercih edilir)Stokta olmayan ürün sayfaları — Ürün stoğa dönene kadar alıcıları kategori sayfasına gönderme
Kısa süreli promosyon URL'leri —
/black-fridayyalnızca kampanya süresince kampanya sayfasına yönlendirme
Bu durumlardan herhangi biri kalıcı olursa 301'e geçin. Arama motorları uzun süreli bir 302yi 301 olarak değerlendirmek için aylarca bekler, dolayısıyla kalıcı bir taşımayı 302de bırakmak bu süre boyunca sıralama sinyallerine mal olur.
Advertisement
302 Durum Kodu Nasıl Gönderilir
Çoğu web sunucusu ve framework 302 yönlendirme göndermek için yerleşik yardımcılara sahiptir. Aşağıda en yaygın desenler. Her biri HTTP 302 Found ile bir Location başlığı yayınlar — 302 yanıtının kesinlikle ihtiyaç duyduğu tek iki şey.
Nginx
Nginx'te return direktifini 302 koduyla kullanın (kodu atlarsanız varsayılan da 302'dir):
server {
listen 80;
server_name example.com;
# Geçici yönlendirme (302 Found)
location /old-page {
return 302 https://example.com/new-page;
}
}Apache (.htaccess)
Apache'de Redirect'i 302 koduyla veya RewriteRule'u [R=302,L] bayrağıyla kullanın:
# Basit geçici yönlendirme
Redirect 302 /old-page https://example.com/new-page
# Veya desen eşleme için mod_rewrite ile
RewriteEngine On
RewriteRule ^maintenance$ /maintenance.html [R=302,L]Node.js (Express)
Express'in res.redirect() metodu, kod sağlanmadığında varsayılan olarak 302 kullanır:
// Geçici yönlendirme (varsayılan 302 Found)
app.get('/dashboard', (req, res) => {
if (!req.user) {
return res.redirect('/login') // 302 gönderir
}
// ...dashboard render
})
// Veya açık olun:
res.redirect(302, '/login')302 Durum Kodu Nasıl Test Edilir
302 yönlendirme uyguladıktan sonra doğru çalıştığını doğrulayın. En hızlı yol terminalden curl — tarayıcı önbelleği müdahalesi olmadan tam durum kodunu ve Location başlığını gösterir.
# Yönlendirmeyi takip etmeden yalnızca yanıt başlıklarını göster (-I)
curl -I https://example.com/old-page
# Beklenen çıktı:
# HTTP/2 302
# location: https://example.com/new-page
# cache-control: no-cache
# date: Mon, 27 Apr 2026 14:00:00 GMT
# Tüm zinciri takip et (-L) ve her sıçramayı göster
curl -ILs https://example.com/old-page | grep -i 'HTTP/\|location:'Terminale erişiminiz yoksa, tüm zinciri tarafsız bir konumdan takip etmek için DNS Robot'un ücretsiz Yönlendirme Denetleyicisi'ni veya ham yanıt başlıklarını incelemek için HTTP Başlıkları Denetleyicisi'ni kullanın — her ikisi de tarayıcı önbelleğini atlar.
302 Yönlendirmeleri ve SEO
Bir HTTP 302 durum kodu arama motorlarına şunu söyler: 'bu taşıma geçici, orijinal URL'yi indekste tutun.' Bu, sıralama sinyalleri için doğrudan sonuçlar doğurur.
Google Search Central'a göre, bir 302 orijinal URL'nin sıralama sinyallerini yönlendirme hedefine 301'in yaptığı şekilde aktarmaz. Orijinal URL kanonik kalır. Diğer kanonikleştirme sinyalleri (iç bağlantılar, sitemap, hreflang) hedef sayfayı işaret ediyorsa Google yine de hedef sayfayı indeksleyebilir — ancak 302nin kendisi kanonik bir sinyal değildir.
Kalıcı taşımalar için 301 kullanın — Alan adı değişiklikleri, URL yapı değişiklikleri, sayfa birleştirmeleri
Geçici taşımalar için 302 kullanın — Giriş akışları, A/B testleri, bakım, bölgesel yönlendirme
Kalıcı taşımayı 302'de bırakmayın — Google uzun süreli bir 302'yi 301 olarak değerlendirmek için aylarca bekler ve sıralama eşitliğini kaybedersiniz
Zincirlerden kaçının —
A → 302 → B → 302 → Csinyalleri seyreltir ve sayfa yüklemesini yavaşlatır. Her sıçrama gecikme ekler
Neden 302 POST İsteklerini GET'e Değiştirir
Bu, HTTP 302'nin en şaşırtıcı davranışıdır. Orijinal RFC, istemcilerin yönlendirmeyi takip ederken istek metodunu koruması gerektiğini söylüyordu. Ancak ilk tarayıcılar — Mosaic, Netscape, IE — hepsi 302de POST'u GET'e değiştirdi ve bu yanlış davranış o kadar yaygınlaştı ki WHATWG Fetch Standard'da standartlaştırıldı.
Bugün, bir tarayıcı POST /login gönderdiğinde ve sunucu 302 Found ile yanıt verdiğinde, tarayıcı otomatik olarak yönlendirme hedefine karşı bir GET /next-page yayınlar. Form verileri atılır. Bu nadiren sunucu geliştiricilerinin amaçladığı şeydir.
# Gönderdiğiniz şey:
POST /submit-form HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
name=Alice&email=alice@example.com
# Sunucu 302 ile yanıt verir:
HTTP/1.1 302 Found
Location: /thank-you
# Tarayıcı GET ile takip eder (form verileri atılır!):
GET /thank-you HTTP/1.1
Host: example.comYönlendirmenin orijinal metodu koruması gerekiyorsa (POST POST kalır, PUT PUT kalır), 302 yerine 307 Temporary Redirect kullanın. Gövdeyi kasıtlı olarak atıp GET'e geçmek istiyorsanız — klasik POST/Redirect/GET deseni — 303 See Other kullanın. Her ikisi de net; 302 değil.
Advertisement
Yaygın 302 Sorunları ve Çözümleri
HTTP 302 yanlış gittiğinde, genellikle bu belirtilerden biri olarak ortaya çıkar. Çoğu basit çözümlere sahiptir:
`200 yerine 302 alma` — Sunucu olmaması gereken zamanda yönlendiriyor.
.htaccess, Nginx yapılandırması veya framework middleware'de istenmeyen yönlendirme kurallarını kontrol edin`Location başlığı olmayan 302` — Geçersiz yanıt. Tarayıcılar boş sayfa gösterir. Kodunuzun durumu göndermeden önce
Locationbaşlığını ayarladığından emin olun`Kendisine yönlendiren 302` — Yönlendirme döngüsü.
LocationURL'si istek URL'siyle eşleşiyor. Eksik koşullar için kuralı kontrol edin`Form verilerini atan 302` — POST → 302 → GET gövdeyi atar. POST'u korumak için
307 Temporary Redirect'e geçin`Tarayıcı tarafından önbelleğe alınan 302` — Buggy sunucu yönlendirmede
Cache-Control: max-age=...ayarladı.Cache-Control: no-cacheekleyin ve tarayıcı önbelleğini temizleyin`Üretimde 302 ama yerelde değil` — Genellikle bir CDN veya yük dengeleyici yönlendirmeler ekliyor. İzole etmek için doğrudan origin'e karşı test edin
302 Yönlendirme Döngüleri: Nasıl Tanılanır
Yönlendirme döngüsü, URL A'nın URL B'ye 302 döndürdüğünde ve URL B'nin tekrar A'ya 302 döndürdüğünde oluşur. 20 sıçramadan sonra (Chrome ve Firefox'ta) tarayıcı ERR_TOO_MANY_REDIRECTS gösterir ve vazgeçer.
En yaygın tek neden, bir CDN (Cloudflare gibi) ile origin sunucu arasındaki SSL/HTTPS çakışmasıdır: CDN origin'e HTTP üzerinden bağlanır, origin HTTP→HTTPS yönlendirir, CDN HTTPS'i çıkarır ve tekrar HTTP üzerinden bağlanır — sonsuz döngü.
# Tüm zinciri takip et (sonsuz döngülerden kaçınmak için 10 sıçramayla sınırla)
curl -ILs --max-redirs 10 https://example.com 2>&1 | grep -i 'HTTP/\|location:'
# Bir döngü örneği:
# HTTP/2 302
# location: http://example.com/
# HTTP/1.1 302 Found
# Location: https://example.com/
# HTTP/2 302
# location: http://example.com/ <-- döngü onaylandıLocation başlıklarında iki URL'nin değiştiğini görürseniz, bir 302 yönlendirme döngüsü onayladınız. Tam çözüm rehberi için ERR_TOO_MANY_REDIRECTS rehberimize bakın. DNS Robot'un Yönlendirme Denetleyicisi tarafsız bir konumdan tüm zinciri takip eder ve döngü noktasında durur.
302 Durum Kodu En İyi Uygulamalar
302 Found'u doğru göndermek, yönlendirmeleri uygularken geliştiricilerin karşılaştığı çoğu hatayı önler:
Her zaman Location başlığı ekleyin —
Locationolmayan bir302geçersizdir ve boş sayfa olarak görüntülenirHer zaman Cache-Control: no-cache ayarlayın — Aksi halde bazı tarayıcılar yönlendirmeyi oturum boyunca önbelleğe alır ve 'geçici' sözleşmeyi bozar
Location'da mutlak URL kullanın —
https://example.com/newnet;/newçalışır ancak ana bilgisayarı değiştiren proxy'lerin arkasında bozulabilirYönlendirmeleri tek sıçrama ile sınırlayın —
A → 302 → Biyi;A → 302 → B → 302 → Csayfa yüklemeyi yavaşlatır ve sinyalleri seyreltirPOST'tan farklı bir sayfaya 302 ile yönlendirme yapmayın —
303(kasıtlı GET) veya307(POST'u koru) kullanınYönlendirmeleri aylık denetleyin — Eski geçici yönlendirmeler genellikle nedenlerini geride bırakır. Redirect Checker ile kontrol edin
Taşıma kalıcı olduğunda 301'e geçin — Kalıcı bir taşımayı
302de birkaç haftadan fazla bırakmayın
Tarayıcı ve Önbellek Davranışı
Farklı tarayıcılar ve aracılar HTTP 302yi biraz farklı yönetir. Bu özellikleri bilmek hata ayıklama süresinden tasarruf sağlar:
| İstemci | 302'de Varsayılan Davranış | Varsayılan Önbellek |
|---|---|---|
| Chrome / Edge | Otomatik takip eder, POST→GET değiştirir | Başlıklar söylemedikçe önbelleğe alınmaz |
| Firefox | Otomatik takip eder, POST→GET değiştirir | Başlıklar söylemedikçe önbelleğe alınmaz |
| Safari | Otomatik takip eder, POST→GET değiştirir | Yönlendirmelerin önbelleklenmesi biraz daha agresif |
| curl (varsayılan) | Takip ETMEZ — 302 + Location gösterir | Önbellek yok |
| curl -L | --max-redirs (varsayılan 50)'e kadar takip eder | Önbellek yok |
| wget (varsayılan) | --max-redirect=20'ye kadar otomatik takip eder | Önbellek yok |
| Googlebot | Takip eder, geçici sinyal olarak değerlendirir | Orijinal URL'yi yeniden tarar |
Uç durumlarda (POST metotları, sonsuz döngüler, başlık varlığı) yönlendirme davranışını doğrulamak için DNS Robot'un HTTP Başlıkları Denetleyicisi ham yanıtı tarayıcı tarafı metot yeniden yazımı olmadan gösterir. Geçici yönlendirmeler hakkında MDN belgelerinde ve RFC 9110 spesifikasyonunda daha fazla bilgi edinin.
Advertisement
Herhangi bir yönlendirme zincirini saniyeler içinde takip edin
DNS Robot'un ücretsiz Yönlendirme Denetleyicisi ile bir yönlendirme zincirindeki her sıçramayı inceleyin — durum kodları, Location başlıkları ve son hedefi tarafsız bir sunucudan görün (tarayıcı önbelleği yok).
Dene Yönlendirme DenetleyicisiAdvertisement
Sıkça Sorulan Sorular
302 durum kodu (HTTP 302 Found), istenen kaynağın yanıtın Location başlığında belirtilen farklı bir URL'de geçici olarak bulunduğu anlamına gelir. İstemci bu istek için yönlendirmeyi takip etmeli, ancak gelecekteki istekler için orijinal URL'yi kullanmaya devam etmelidir. 301 Moved Permanently'nin geçici karşılığıdır.