307 yönlendirmesi (307 Temporary Redirect), bir web sayfasının veya kaynağın geçici olarak farklı bir URL üzerinden sunulacağını bildiren bir HTTP durum kodudur. Bu durum kodu, istemciye (tarayıcı veya bot) “İstediğin kaynak şu an burada değil ama geçici olarak başka bir adresten erişebilirsin” mesajı verir.
307 yönlendirmesi, HTTP/1.1 ile birlikte daha tutarlı davranış sağlamak amacıyla geliştirilmiştir. Bu kod, 302 yönlendirmesine benzer görünse de arada önemli bir teknik fark vardır:
307 yönlendirmesinde HTTP metodunun (GET, POST, PUT vb.) kesinlikle korunması gereklidir. Tarayıcı yönlendirmeyi gerçekleştirirken isteğin türünü değiştiremez.
Bu nedenle 307 Temporary Redirect, özellikle form gönderimleri, API istekleri, ödeme adımları, oturum işlemleri gibi POST veya PUT isteği gerektiren kritik durumlarda güvenilir bir geçici yönlendirme çözümüdür.
Ne Zaman 307 Yönlendirmesi Kullanılır?
307 yönlendirmesi, özellikle geçicilik durumunun net şekilde belirtildiği senaryolarda tercih edilir. Aşağıda en yaygın kullanım alanlarını bulabilirsiniz:
Sunucuda Geçici Bakım veya Taşınma Olduğunda
Bir sayfa veya endpoint geçici olarak kapalıysa, kullanıcıları başka bir adrese yönlendirirken 307 kodu kullanılabilir. Bu, arama motorlarına ve tarayıcılara “Bu sadece geçici, ana URL geçerliliğini koruyor” mesajı verir.
HTTP Metodunun Korunması Gerekiyorsa
302 yönlendirmesinde tarayıcılar isteği GET isteğine çevirebilir ancak 307’de bu kesinlikle engellenir. Bu da şu durumlarda kritik öneme sahiptir:
- Form POST işlemleri
- API endpoint yönlendirmeleri
- Ödeme adımları
- Yetkilendirme token işlemleri
Örneğin bir ödeme adımı için POST isteği yapılıyorsa ve bu adım geçici olarak başka bir URL’den çalışıyorsa, yönlendirmenin POST olarak iletilmesi zorunludur. Bu durumda 307 yönlendirmesi yapılmalıdır.
SEO Açısından Geçici Yönlendirme Gereksinimleri
307 yönlendirmesi, Google’a ve diğer arama motorlarına URL’nin kalıcı olarak taşınmadığını bildirir. Bu nedenle:
- Eski URL’nin indekslenmeye devam etmesi istenir.
- Link değeri (authority) geçici hedef URL’ye taşınmaz.
- Botlar ilerleyen günlerde yeniden eski URL’yi taramaya devam eder.
Dolayısıyla “site geçici bakımda”, “test aşaması devam ediyor”, “ürün kısa süreli stok dışı” gibi durumlar için doğru yönlendirme türüdür.
Trafiği Geçici Olarak Farklı Sunucuya Alma Durumlarında
Büyük ölçekli sitelerde yük dengeleme veya sunucu güncellemeleri yapılırken trafik zaman zaman başka sunucuya yönlendirilebilir. Bu süreçte 307 Temporary Redirect sıkça kullanılır.
307 Geçici Yönlendirme Nasıl Yapılır?
307 yönlendirmesi, kullanılan sunucu teknolojisine göre birkaç şekilde uygulanabilir. İşte en yaygın yöntemler:
.htaccess ile 307 Yönlendirmesi (Apache)
Apache sunucularda .htaccess dosyası kullanarak 307 yönlendirmesi yapmak mümkündür:
Redirect 307 /eski-sayfa https://www.ornek.com/yeni-sayfa
Daha gelişmiş bir Rewrite kuralı ise şu şekildedir:
RewriteEngine On
RewriteRule ^eski-sayfa$ https://www.ornek.com/yeni-sayfa [R=307,L]
Nginx ile 307 Yönlendirmesi
Nginx sunucularda yönlendirme yapılandırması şu şekilde yapılır:
location /eski-sayfa {
return 307 https://www.ornek.com/yeni-sayfa;
}
Bu yapı, geçici bir yönlendirme gerektiğinde en net ve güvenilir yöntemlerden biridir.
PHP ile 307 Yönlendirme
Dinamik projelerde, yönlendirmeyi PHP ile kontrol etmek gerekebilir:
header(“Location: https://www.ornek.com/yeni-sayfa”, true, 307);
exit();
PHP’de true parametresi yeni HTTP durum kodunun gönderilmesini sağlar.
JavaScript ile 307 Yönlendirme (Önerilmez)
Tarayıcı tarafında JavaScript ile yönlendirme yapılabilir; ancak SEO açısından tercih edilmez:
window.location.replace(“https://www.ornek.com/yeni-sayfa”);
Bu tür yönlendirmeler arama motorları tarafından sunucu yönlendirmesi kadar güçlü algılanmaz.
API ve Backend Frameworklerde 307 Yönlendirme
Örneğin Node.js Express üzerinde:
app.get(‘/eski’, (req, res) => {
res.redirect(307, ‘/yeni’);
});
Laravel:
return redirect()->away(‘https://www.ornek.com/yeni-sayfa’, 307);
Django:
from django.http import HttpResponseRedirect
return HttpResponseRedirect(‘https://www.ornek.com/yeni-sayfa’)