İlk kez 2000 yılında kaydedilmiş bir domain satın aldım. Kâğıt üzerinde bu geçmiş bir avantaj gibi görünüyordu. Yeni siteyi yayına aldığımda ise sunucu logları, benim hiç oluşturmadığım sayfalara gelen isteklerle dolmaya başladı.
Yeni projede hiç bulunmayan URL'lere günde 1.000'den fazla istek geliyordu. Analytics tarafında bu, neredeyse hiç etkileşim üretmeyen büyük bir direct traffic sıçraması olarak görünüyordu. Aynı sırada Yandex crawler eski path'lere geri dönüyor, 404 Not Found alıyor ve Yandex Webmaster bir gecede 900'den fazla hata biriktiriyordu.
İlk açıklamam basitti: eski botlar ölü URL'lere vuruyor, Yandex bu aktiviteyi görüyor ve bu yüzden onları taramaya devam ediyor. Benim tarafımdan bakınca olayların sırası böyle görünüyordu. Fakat elimdeki veri bu nedenselliği kanıtlamaya yetmiyordu.
Gerçekte doğrulayabildiğim şeyler
Üç ayrı gözlem vardı. Birincisi, sunucu domainin önceki hayatından kalan URL'lere yüksek miktarda istek alıyordu. İkincisi, bu trafik neredeyse hiçbir gerçek kullanıcı etkileşimine dönüşmüyordu. Üçüncüsü, Yandex crawler da eski path'leri istiyor ve Webmaster paneli bir gecede 900'den fazla hata gösteriyordu.
Operasyonel olarak bu gerçek bir sorundu: gürültülü loglar, gereksiz istekler ve temizlenmesi gereken bir hata raporu. Ama bu gerçekler, üçüncü taraf botların Yandex crawl'ını tetiklediğini veya hataların ranking ya da organik trafiğe doğrudan zarar verdiğini kanıtlamaz. Crawling indexing değildir, indexing ranking değildir ve bir hata raporu ceza kanıtı değildir.
404 ile 410 konusunda fazla basitleştirdiğim nokta
Eskiden farkı kabaca şöyle düşünüyordum: 404 “şimdilik yok olabilir”, 410 ise “kalıcı olarak gitti” demek. Sezgisel olarak faydalı ama teknik olarak tam doğru değil.
404 Not Found, sunucunun istenen kaynağın güncel bir temsilini sunamadığını ifade eder; status tek başına bunun geçici mi kalıcı mı olduğunu söylemez. 410 Gone daha spesifiktir: sunucu kaynağın artık bulunmadığını ve bu durumun kalıcı olmasının beklendiğini biliyorsa uygundur.
SEO konusunda da bu ayrım önemli. Arama motorları hem 404 hem 410 döndüren URL'leri aramadan çıkarabilir. Bu yüzden artık 410'u sihirli biçimde “daha güçlü SEO statusu” olarak tanımlamıyorum ve silinmiş her sayfada 404'ün yanlış olduğunu söylemiyorum.
Yine de benim vakamda hedefli 410 neden mantıklıydı
Eski path'ler geçici bir arıza değildi. Domainin önceki içeriğine aitti ve yeni projede karşılığı yoktu. Bu belirli URL'lerin kalıcı olarak gittiğini biliyordum. Bu nedenle 410 Gone onların durumunu doğru biçimde ifade ediyordu.
Bu yüzden her bilinmeyen URL'yi 410 yapmak yerine yalnızca bilinen legacy path'lere hedefli 410 yanıtları yapılandırdım. Bu değişiklikten sonra eski path'lerle ilgili crawl ve raporlama gürültüsü azaldı, webmaster araçlarındaki durum da belirgin biçimde temizlendi.
Yine de nedensellik konusunda temkinliyim. İyileşmenin bu değişiklikten sonra geldiğini ve 410'un URL'lerin durumunu doğru anlattığını söyleyebilirim. Ancak 410'un tek başına bütün botları durdurduğunu kanıtlayamam. Herhangi bir üçüncü taraf bot HTTP statusunun anlamını yok sayıp aynı path'i sonsuza kadar istemeye devam edebilir.
Şimdi kullandığım karar kuralı
Faydalı soru “410, 404'ten daha mı iyi?” değil, “bu URL'ye gerçekte ne oldu?” sorusudur.
- Açık bir karşılığı var: gerçekten eşdeğer yeni URL'ye
301gibi kalıcı redirect kullanın. - Eski kaynak kalıcı olarak silindi ve yerine geçecek bir şey yok:
410 Gonehassas bir seçimdir. - URL sadece bilinmiyor, yanlış yazılmış veya hiç var olmadı: normal
404 Not Founduygundur.
Sırf hatalar kaybolsun diye bütün ölü URL'leri ana sayfaya yönlendirmekten kaçınırım. Bu, kaynağın gerçek durumunu gizler ve hem kullanıcı hem crawler için daha kötü bir deneyim yaratabilir.
Bugün eski bir domaini yayından önce nasıl denetlerdim
Tarihi olan bir domaini tekrar kullanırsam, eski siteyi taşımıyor olsam bile URL geçmişini migration'ın bir parçası olarak ele alırım.
- Eski footprint'i inceleyin. Yayından önce historical URL'leri ve açık legacy bölümlerini arayın.
- İlk günden access log'ları izleyin. Hiç oluşturmadığınız path'lere tekrar eden istekler, domainin dışarıda hâlâ hatırlandığını gösterir.
- İnsanları, search crawler'ları ve rastgele botları ayırın. Direct traffic sıçraması ile crawler hatası farklı sinyallerdir; bunları otomatik olarak tek bir nedensel hikâyeye bağlamayın.
- Tekrarlayan ölü URL'leri sınıflandırın. Her önemli pattern için bilinçli şekilde 301, 404 veya 410 seçin.
- Sonucu ayrı ayrı izleyin. İstek sıklığı, crawler raporları ve indexing farklı boyutlardır; hepsini tek bir muğlak “SEO health” metriğine indirmeyin.
Bu çalışma, sorun loglar ve webmaster araçları gürültüyle dolduktan sonra fark edildiğinde harcanacak emekten çok daha küçüktür.
410 neyi çözmez
410, bir kaynağın durumunu anlatan HTTP yanıtıdır. Firewall, rate limiter veya bot engelleme mekanizması değildir. Bir scraper 410 aldıktan sonra da istek göndermeye devam ederse sunucu hâlâ bu istekleri alıp yanıtlamak zorundadır. Asıl problem aşırı istek hacmiyse bu ayrı bir altyapı problemidir.
Ayrıca SEO boost değildir. Doğru status crawler'ın URL'ye ne olduğunu anlamasına yardımcı olur; yeni siteyi tek başına daha üst sıraya taşımaz.
Bende kalan ders
Şaşırtıcı olan eski bir domainin eski URL'lere sahip olması değildi. Görünmez geçmişin yayından hemen sonra ne kadar hızlı geri dönmesiydi: sahip olmadığım sayfalara günde 1.000'den fazla istek, neredeyse sıfır etkileşim ve Yandex Webmaster'da bir gecede 900'den fazla hata.
Eski bir domain boş bir namespace değildir. Eski linkler, crawlers, script'ler ve botlar orijinal içerik ortadan kalktıktan yıllar sonra bile path'leri hatırlayabilir. Bugünkü kuralım basit: geçmişi denetle, gerçeğe uygun HTTP statusunu döndür ve operasyonel bot trafiğini arama motoru davranışı hakkındaki sonuçlardan ayrı tut.
Geçmiş bir değer olabilir. Aynı zamanda devraldığınız bir state'tir.