Yazılım

Modern Web Uygulamalarında Teknik SEO: Kod Seviyesinde Kontrol Listesi

Core Web Vitals, canonical ve hreflang, render stratejisi ve yapısal veri: arama motorlarının sitenizi doğru anlaması için kod tarafında kontrol etmeniz gerekenler.

İçerik ne kadar iyi olursa olsun, teknik temel hatalıysa arama motorları sayfanızı ya yanlış anlar ya da hiç görmez. Teknik SEO, pazarlama ekibinin değil büyük ölçüde geliştiricinin sorumluluğundadır: adresler, render biçimi, performans ve yapısal veri doğrudan kodda belirlenir. Aşağıdaki liste, yeni bir projeyi yayına almadan önce benim de üzerinden geçtiğim başlıkları özetliyor.

1. Tek bir doğru adres: canonical, hreflang ve yönlendirmeler

Aynı sayfa http, https, www ve www'suz olmak üzere dört farklı adresten açılıyorsa, arama motoru için dört ayrı kopya vardır. Hepsini tek bir kök adrese 301 ile yönlendirin ve her sayfada mutlak bir canonical etiketi verin.

<link rel="canonical" href="https://ornek.com/hizmetler">
<link rel="alternate" hreflang="tr" href="https://ornek.com/hizmetler">
<link rel="alternate" hreflang="en" href="https://ornek.com/en/services">
<link rel="alternate" hreflang="x-default" href="https://ornek.com/hizmetler">

Sık yapılan bir hata: kök adres bir ortam değişkeninden (ör. APP_URL) okunur ve canlı sunucuda yerel değer (localhost) kalır. Sayfa sorunsuz açıldığı için fark edilmez, ama canonical, sitemap ve paylaşım görselleri yanlış alan adını gösterir. Yayından sonra sayfa kaynağında bu etiketleri mutlaka kontrol edin. hreflang etiketleri de karşılıklı olmalıdır: Türkçe sayfa İngilizceyi gösteriyorsa İngilizce sayfa da Türkçeyi göstermelidir.

2. Render stratejisi: kritik içerik ilk HTML'de olsun

Google JavaScript'i çalıştırabilir, ancak bunu ayrı bir işleme kuyruğunda yapar. Başlıklar, ana metin ve iç bağlantılar yalnızca tarayıcıda oluşuyorsa dizine eklenmeleri gecikebilir. Bu yüzden:

  • İçerik sayfaları için sunucu tarafı render (SSR) veya statik üretim (SSG) tercih edin; Next.js ve Nuxt bunu hazır sunar, klasik PHP şablonları zaten sunucuda üretir.
  • Sayfalar arası geçişlerde gerçek <a href> bağlantıları kullanın; yalnızca onClick ile yönlendirme yapan öğeler taranmaz.
  • Her sayfanın kendine ait başlığı (<title>) ve açıklaması sunucudan gelsin.

3. Core Web Vitals: ölçülen deneyim

Google'ın sayfa deneyimi sinyalleri üç metrikten oluşur ve gerçek kullanıcı verisinin 75. yüzdeliğine göre değerlendirilir:

  • LCP (Largest Contentful Paint): en büyük içerik öğesinin görünme süresi; iyi değer 2,5 saniye ve altı.
  • INP (Interaction to Next Paint): etkileşime tepki süresi; iyi değer 200 ms ve altı. Mart 2024'te FID'in yerini aldı.
  • CLS (Cumulative Layout Shift): sayfa yüklenirken yaşanan kaymalar; iyi değer 0,1 ve altı.

LCP için

Ekranın üstündeki ana görseli asla tembel yüklemeyin; öncelik verin ve cihaza uygun boyutu sunun:

<img src="/img/kapak-1280.webp"
     srcset="/img/kapak-640.webp 640w, /img/kapak-1280.webp 1280w"
     sizes="(max-width: 900px) 100vw, 50vw"
     width="1280" height="720" fetchpriority="high" alt="…">

CLS için

Görsellere ve gömülü öğelere width/height verin, sonradan yüklenen bantlar için alan ayırın ve web fontlarını önceden yükleyin (preload).

INP için

Ana iş parçacığını uzun süre meşgul eden görevleri bölün, kullanılmayan JavaScript'i kaldırın ve üçüncü taraf betikleri (sohbet balonları, reklam etiketleri) gerçekten gerekli olanlarla sınırlayın.

4. Taranabilirlik: robots.txt, sitemap ve durum kodları

  • robots.txt yalnızca taranmasını istemediğiniz alanları (yönetim paneli, iç arama sonuçları) engellesin ve sitemap adresini göstersin.
  • XML sitemap'e yalnızca 200 dönen, kanonik adresleri ekleyin; yönlendirilen veya noindex sayfalar orada olmamalı.
  • Bulunamayan sayfalar gerçekten 404 dönsün; "bulunamadı" yazan ama 200 dönen sayfalar (soft 404) tarama bütçesini boşa harcar.
  • Yönlendirme zincirlerinden kaçının: eski adres tek adımda son adrese gitmeli.

5. Yapısal veri (JSON-LD)

Yapısal veri, sayfanın ne anlattığını makinelerin anlayacağı biçimde tarif eder: kişi veya kuruluş, makale, ürün, sık sorulan sorular, içerik haritası (breadcrumb). Kural basit: işaretlediğiniz her bilgi sayfada görünür olmalı. Yayından önce Google'ın Zengin Sonuç Testi ile doğrulayın.

<script type="application/ld+json">
{"@context": "https://schema.org", "@type": "Article",
 "headline": "…", "datePublished": "2026-09-27",
 "author": {"@type": "Person", "name": "…"}}
</script>

6. Sunucu tarafı performans

Hızlı bir ön yüz, yavaş bir sunucuyu telafi edemez. Metin dosyalarını sıkıştırın (Brotli veya gzip), statik dosyalara dosya adında sürümle birlikte uzun önbellek süresi verin ve sık değişmeyen sayfaları sunucu tarafında önbelleğe alın. Veritabanında sık kullanılan sorgular için doğru indeksleri tanımlamak çoğu zaman en ucuz hızlandırmadır.

Yayın öncesi özet kontrol listesi

  • http → https ve www → tek alan adı, tek adımlı 301 ile.
  • Canonical ve hreflang mutlak, doğru alan adıyla ve karşılıklı.
  • Kritik içerik ve bağlantılar ilk HTML yanıtında.
  • LCP görseli öncelikli; tüm görsellerde boyut ve alt metni var.
  • Sitemap yalnızca kanonik, 200 dönen adresler; robots.txt sitemap'i gösteriyor.
  • JSON-LD sayfadaki içerikle birebir ve doğrulanmış.
  • Sıkıştırma, önbellek başlıkları ve güvenlik başlıkları etkin.

Teknik SEO tek seferlik bir iş değildir; her yeni özellik bu listeden birini bozabilir. Kontrolleri yayın sürecinin bir parçası yapmak, sıralama kayıplarını daha oluşmadan önler.