Web sitesi taşıma tek bir iş değil, dört farklı iştir ve hangisini yaptığınız riskin tamamını belirler: yalnızca sunucu değiştirmek (hosting taşıma) neredeyse risksizdir, alan adı değiştirmek ya da URL yapısını değiştirmek ise arama trafiğinizin tamamını tehlikeye atar. Kural şudur: URL’ler değişmiyorsa taşıma teknik bir iştir; URL’ler değişiyorsa taşıma bir SEO projesidir ve merkezinde tek bir şey vardır — eski her adresi yeni karşılığına gönderen kalıcı yönlendirme haritası. Aşağıda dört taşıma tipini, yönlendirme haritasının nasıl kurulup nasıl denetlendiğini, DNS ve TTL planını, taşıma günü yapılacakları sırayla, sonrasında izlenecek sayıları ve trafiği düşüren beş hatayı bulacaksınız.
Hangi taşımayı yapıyorsunuz?
İşe başlamadan önce hangi kutuya girdiğinizi netleştirin; iş planı da risk de buna göre değişir:
- Sunucu/hosting değişikliği — alan adı ve URL’ler aynı, yalnızca dosyalar ve veritabanı başka bir sunucuya taşınıyor. En düşük riskli senaryo. Asıl dikkat: kesinti süresi ve SSL sertifikasının yeni sunucuda hazır olması.
- Alan adı değişikliği — marka değişimi, .com.tr’den .com’a geçiş gibi. URL yolları aynı kalsa bile her adres değiştiği için tam bir yönlendirme haritası şart.
- Protokol veya alt alan adı değişikliği — http’den https’e ya da www olan/olmayan sürüm arasında geçiş. Küçük görünür, ama dört varyantın (http/https × www/çıplak) hepsinin tek bir kanonik adrese gitmesi gerekir.
- Platform veya URL yapısı değişikliği — WordPress’ten modern bir altyapıya geçiş, kategori yapısının değişmesi, dil öneklerinin eklenmesi. En riskli senaryo; burada yönlendirme haritası sayfa sayfa çıkarılır.
Tek soruyla riski ölçebilirsiniz: taşımadan sonra eski bir adres tarayıcıya yazıldığında ne oluyor? Cevap “aynı sayfa açılıyor” ise risk düşüktür; “404” ise arama motorundaki birikiminizi çöpe atıyorsunuz demektir.
Taşımadan önce: envanter çıkarmak
Yönlendirme haritası tahminle yazılamaz; eldeki adres listesiyle yazılır. Taşımadan önce dört kaynaktan liste toplanır ve birleştirilir:
- Mevcut sitemap.xml — sitenin kendi beyan ettiği adresler. Başlangıç noktası, ama yeterli değil: yıllar içinde silinmiş ama hâlâ indeksli sayfalar burada olmaz.
- Arama konsolu (Search Console) sayfa raporu — Google’ın gerçekten bildiği adresler. Trafik alan her adres bu listede olmalı; unutulmuş ama sıralanan sayfalar en çok buradan çıkar.
- Sunucu erişim kayıtları (access log) — son 3-6 ayda gerçekten istenen adresler. Dış sitelerden link almış eski adresler yalnızca burada görünür.
- Analitik verisi — giriş sayfası (landing page) raporu. Hangi adreslerin trafik getirdiğini gösterir ve haritada öncelik sırasını belirler.
Bu dört listeyi birleştirip tekilleştirin, sonra trafiğe göre sıralayın. Pratikte adreslerin küçük bir kısmı trafiğin çoğunu taşır; harita önce o kısım için doğru olmalıdır. Sitenin arama motorundaki mevcut durumunu okumakta zorlanıyorsanız web sitesi Google’da neden çıkmıyor yazımız işe yarar.
Yönlendirme haritası: zincir ve döngü denetimi
Harita yazmak kolay, haritayı doğrulamak zordur. Üç şey sessizce trafik yakar: eşleşmeyen adresler (404’e düşer), yönlendirme zincirleri (A→B→C, her adım sinyal ve hız kaybettirir) ve döngüler (A→B→A, sayfa hiç açılmaz). Aşağıdaki fonksiyon bir haritayı taşımadan önce bu üçüne karşı denetler:
type RedirectMap = Map<string, string>;
/**
* Karşılaştırma için adresi tekilleştirir: sondaki eğik çizgi, büyük harf ve
* takip parametreleri kaldırılır. Anlamlı sorgu parametreleri (ör. ?sayfa=2)
* korunur — onları silmek iki farklı sayfayı aynı sayar.
*/
const TRACKING = new Set(['utm_source', 'utm_medium', 'utm_campaign', 'gclid', 'fbclid']);
function normalize(raw: string): string {
const u = new URL(raw);
u.hostname = u.hostname.toLowerCase().replace(/^www\./, '');
u.protocol = 'https:';
u.hash = '';
for (const key of [...u.searchParams.keys()]) {
if (TRACKING.has(key)) u.searchParams.delete(key);
}
u.searchParams.sort();
if (u.pathname.length > 1 && u.pathname.endsWith('/')) {
u.pathname = u.pathname.slice(0, -1);
}
return u.toString();
}
type Verdict =
| { status: 'ok'; target: string }
| { status: 'chain'; target: string; hops: number }
| { status: 'loop'; path: string[] }
| { status: 'missing' };
/** Bir adresin haritadaki son hedefini bulur, yolda zincir ve döngü arar. */
function resolve(from: string, map: RedirectMap, maxHops = 5): Verdict {
const seen: string[] = [];
let current = normalize(from);
let hops = 0;
while (map.has(current)) {
if (seen.includes(current)) return { status: 'loop', path: [...seen, current] };
seen.push(current);
current = normalize(map.get(current)!);
hops += 1;
if (hops > maxHops) return { status: 'loop', path: [...seen, current] };
}
if (hops === 0) return { status: 'missing' };
return hops === 1
? { status: 'ok', target: current }
: { status: 'chain', target: current, hops };
}
export function auditRedirects(oldUrls: string[], map: RedirectMap) {
const report = { ok: 0, chains: [] as string[], loops: [] as string[], missing: [] as string[] };
for (const url of oldUrls) {
const v = resolve(url, map);
if (v.status === 'ok') report.ok += 1;
else if (v.status === 'chain') report.chains.push(url); // haritayı düzleştir
else if (v.status === 'loop') report.loops.push(url); // taşımayı durdur
else report.missing.push(url); // 404 riski
}
return report;
}Denetimin çıktısı üç aksiyona karşılık gelir ve sırası nettir: döngü varsa taşıma başlamaz, zincirler haritada tek adıma düzleştirilir (A→C yazılır), eşleşmeyenler ise ya doğru hedefe bağlanır ya da bilinçli olarak 410 verilir. “Hepsini ana sayfaya yönlendirelim” en yaygın ve en pahalı kestirmedir: Google bunu bir yönlendirme değil, yumuşak 404 olarak okur ve o sayfanın birikimini aktarmaz.
Yönlendirme kodu: 301 mi 302 mi?
Kalıcı taşımada tek doğru cevap kalıcı yönlendirmedir: 301 ya da 308. Geçici olan 302 ve 307, arama motoruna “eski adres geri gelecek” der ve sinyalleri birleştirmez. Bu ayrım pratikte en sık iki yerde kaçırılır: framework’lerin varsayılan yönlendirme fonksiyonu bazen geçici döner, ve sunucu/CDN katmanında yazılan kural uygulama katmanındaki kuralı gölgeler. Taşımadan sonra rastgele on eski adresi tek tek kontrol edip dönen kodu okumak, bu hatayı bulmanın en hızlı yoludur. Yönlendirmelerin gövde içi linklerle de tutarlı olması gerekir: yeni sitede menü ve içerik linkleri eski adresleri göstermeye devam ediyorsa her tıklama gereksiz bir yönlendirme adımı üretir.
DNS ve TTL planı
DNS değişikliği anında yayılmaz; dünyadaki çözümleyiciler kaydı TTL süresi kadar önbellekte tutar. Bu yüzden taşıma günü değil, taşımadan günler önce yapılacak tek bir hazırlık vardır: TTL’i düşürmek.
- Taşımadan 48 saat önce TTL’i düşürün (ör. 3600 saniyeden 300 saniyeye). Böylece geçiş anında yayılma dakikalar sürer, saatler değil.
- Eski sunucuyu hemen kapatmayın. TTL süresi boyunca bir kısım ziyaretçi eski sunucuya gitmeye devam eder; en az 48-72 saat ikisini birden ayakta tutun.
- Geçiş penceresinde yazma işlemlerini durdurun. İki sunucu birden ayaktayken form gönderimi ya da sipariş iki ayrı veritabanına düşebilir — bu, taşımalarda en çok veri kaybettiren senaryodur.
- Taşıma bittikten sonra TTL’i eski değerine geri alın. Kalıcı olarak 300’de bırakmak gereksiz DNS sorgusu üretir.
- E-posta kayıtlarını (MX, SPF, DKIM, DMARC) ayrı bir kontrol maddesi yapın. Web sunucusunu taşırken bu kayıtların unutulması, e-postanın sessizce çalışmayı bırakmasının bir numaralı sebebidir; kurulum tarafını kurumsal e-posta ücreti yazımızda anlattık.
Taşıma günü: sıra önemlidir
Adımların sırası, adımların kendisinden daha çok hata üretir. Çalışan sıra şudur:
- Yeni ortamı hazırla ve kapalı tut. Site yeni sunucuda tam çalışır durumda olmalı ama arama motorlarına kapalı — bir sahne (staging) adresi kullanılıyorsa robots ile engellenmiş ve şifreli olmalı. Aksi hâlde sahne adresi indekslenir ve gerçek siteyle yarışır.
- Yönlendirme haritasını yeni ortamda test et. Denetim raporunda döngü sıfır, zincir sıfır olmalı.
- SSL sertifikasını yeni sunucuda hazırla. Sertifika geçişten sonra kurulursa tarayıcı uyarısı verir; ücret ve süreç tarafı SSL sertifikası ücreti yazımızda.
- Veriyi son kez senkronize et ve yazmayı durdur. Bu adım geçişten hemen önce yapılır, günler önce değil.
- DNS’i çevir. Bu andan sonra iki sunucu da ayakta kalmalı.
- Sahne engelini kaldır, canlıda kontrol et: on eski adres, on yeni adres, form gönderimi, ödeme akışı ve dört kanonik varyant.
- sitemap.xml’i yeni adreslerle güncelle ve arama konsoluna gönder. Alan adı değiştiyse konsolda adres değişikliği aracını kullan ve yeni alan adı için ayrı bir mülk oluştur.
Bu iş bir yenileme projesinin parçasıysa tasarım ve içerik kararlarıyla birlikte planlanması gerekir; ne zaman ve nasıl yapıldığını web sitesi yenileme (redesign) yazımızda ele aldık.
Taşımadan sonra: hangi sayılara bakılır?
Taşımadan sonraki ilk dört haftada bir miktar dalgalanma normaldir; panik kararı vermemek için önceden hangi sayılara bakacağınızı belirleyin.
- Taranan ve indekslenen sayfa sayısı. Yeni adresler indekse girerken eskiler düşer; ikisinin toplamı istikrarlı olmalı. Yeni adresler girmiyorsa yönlendirme ya da robots tarafında sorun var.
- 404 sayısı. Arama konsolunda ve sunucu kayıtlarında ilk hafta boyunca günlük kontrol edin; çıkan her yeni 404 haritaya eklenecek bir satırdır.
- Toplam tıklama ve gösterim. Sayfa sayfa değil küme küme okuyun; tek bir sayfanın düşmesi normal, bir kümenin komple düşmesi yönlendirme hatasıdır.
- Sayfa hızı. Yeni sunucu daha yavaşsa kazanç kaybe döner; ölçüm setini Core Web Vitals nedir yazımızda anlattık.
- Toparlanma süresi. URL yapısı değişmediyse günler, alan adı değiştiyse birkaç hafta beklenir. Dördüncü haftada hâlâ toparlanma yoksa harita denetimi baştan yapılır.
Trafiği düşüren beş hata
- Yönlendirme haritası yapmamak ya da hepsini ana sayfaya göndermek. Toplu ana sayfa yönlendirmesi yumuşak 404 olarak okunur; birikim aktarılmaz.
- Geçici yönlendirme kullanmak. 302/307 sinyalleri birleştirmez; kalıcı taşımada 301 ya da 308 şart.
- Sahne (staging) ortamını arama motorlarına açık bırakmak. İndekslenen bir test adresi, gerçek siteyle kanibalizasyona girer ve temizlenmesi haftalar alır.
- robots.txt ya da noindex etiketini yeni ortamdan kaldırmayı unutmak. Taşımanın en sessiz ve en yıkıcı hatası budur; site açılır, çalışır, ama indeksten düşer.
- Eski sunucuyu DNS çevrildiği gün kapatmak. TTL süresi boyunca gelen ziyaretçiler hata alır ve bu kesinti arama motoruna da yansır.
Sonuç
Web sitesi taşımanın zor kısmı dosyaları kopyalamak değil; eski adreslerin tamamının yeni karşılığına kalıcı olarak gitmesini sağlamak. Bu yüzden işe envanterle başlayın, haritayı zincir ve döngüye karşı denetleyin, TTL’i taşımadan iki gün önce düşürün ve eski sunucuyu en az 48 saat açık bırakın. URL’leriniz değişmiyorsa bu bir bakım işidir; alan adı ya da URL yapısı değişiyorsa bir SEO projesidir ve öyle planlanmalıdır. Taşımayı planlıyor ya da yenileme ile birlikte yapacaksanız web geliştirme hizmetimize bakabilir, mevcut sayfa sayınızı ve değişecek URL yapısını yazıp teklif alabilirsiniz.