Teknik SEO, web sitenizin arama motorları tarafından bulunabilmesi, taranabilmesi (crawl), anlaşılabilmesi ve indekslenebilmesi için yapılan teknik optimizasyonlardır. İçeriğiniz ne kadar kaliteli olursa olsun, teknik temeller sağlam değilse arama motorlarında görünmezsiniz.
Technical SEO, SEO başarınızın temel direğidir. Çünkü bu faaliyetlerin çoğunun, diğer SEO taktiklerinizin sonuç vermeden önce gerçekleşmesi gerekir.
1. Crawling ve Indexing (Temel)
Arama motorlarının sitenizi bulabilmesi, tarayabilmesi ve indeksleyebilmesi, görünürlüğünüz için ön koşuldur. Bu bölümde, crawling ve indexing süreçlerinde karşılaşılan en yaygın sorunları ve çözümlerini ele alacağız.
Crawling Nedir, Nasıl Çalışır?
Crawling, arama motorlarının web sitelerindeki içeriği keşfetme ve toplama sürecidir. Arama motoru botları (Googlebot gibi), bir sayfayı ziyaret eder, içeriğini okur ve o sayfadaki linkleri takip ederek yeni sayfalar keşfeder.
Crawling Süreci:
1. Bot Ana Sayfaya Gelir
↓
2. İçeriği ve Linkleri Okur
↓
3. Bulunan Linkleri Takip Eder
↓
4. Yeni Sayfaları Keşfeder
↓
[Döngü devam eder]
Site Indexing Kontrolü
Sitenizin indekslendiğinden emin olmanız gerekir çünkü indekslenmemiş bir site arama sonuçlarında görünmez.
Hızlı Kontrol Yöntemi:
Google’da şu aramayı yapın:
site:yourdomain.com
Bu, Google’ın sitenizden kaç sayfayı indekslediğini gösterir.
Detaylı Kontrol: Google Search Console
Google Search Console (GSC), indexing durumunuzu kontrol etmek için en iyi araçtır.
Adımlar:
- GSC’de “Sayfalar” raporuna gidin
- İndekslenen ve indekslenmeyen sayfaları görün
- İndekslenmeme nedenlerini inceleyin
Yaygın İndekslenmeme Nedenleri:
| Neden | Açıklama | Çözüm |
|---|---|---|
| Crawled – currently not indexed | Google sayfayı gördü ama indekslemeye değer bulmadı | İçerik kalitesini artırın, benzersiz değer katın |
| Blocked by robots.txt | Robots.txt dosyanız Google’ı engelliyor | Robots.txt’yi kontrol edin, önemli sayfaların engellenmediğinden emin olun |
| Excluded by ‘noindex’ tag | Sayfada noindex meta tag var | Önemli sayfalardan noindex etiketini kaldırın |
| Duplicate content | İçerik başka bir sayfayla aynı veya çok benzer | Canonical tag kullanın veya içeriği benzersiz yapın |
| Soft 404 | Sayfa 404 gibi görünüyor ama 200 dönüyor | Gerçek 404 veya 301 redirect kullanın |
Düzeltme Süreci:
- Sorunu tespit edin ve düzeltin
- GSC’de “Validate Fix” düğmesine tıklayın
- Google’ın sayfayı yeniden taramasını isteyin
- Doğrulama sürecini takip edin (birkaç gün sürebilir)
Robots.txt Optimizasyonu
Robots.txt dosyası, arama motorlarına ve AI botlarına sitenizin hangi bölümlerine erişebileceklerini söyleyen bir talimat dosyasıdır.
Geleneksel olarak, robots.txt dosyası, “arama motorlarının admin paneli gibi hassas dizinlere girmesini engellemek” için kullanılırdı. Ancak günümüzde asıl görevi, Tarama Bütçesi (Crawl Budget) Yönetimidir.
Robots.txt’nin “Rehber” Rolü
Bu noktada robots.txt devreye girer. Amacımız, Googlebot’un kısıtlı zamanını en iyi şekilde kullanmasını sağlamaktır.
| Robots.txt Aksiyonu | Geleneksel Amaç (Gizleme) | Modern/Stratejik Amaç (Bütçe Yönlendirme) |
Disallow: /filtreler/ |
Filtre URL’lerini gizlemek. | Googlebot’un binlerce filtrelenmiş URL varyasyonunu tarayarak zaman kaybetmesini engellemek. |
Disallow: /eski-yorumlar/ |
Eski, önemsiz içeriği gizlemek. | Değeri düşük, güncel olmayan sayfaların tarama bütçesini tüketmesini önlemek. |
Disallow: /css/ |
(Yanlış kullanımdı.) | Google’a, sayfaların nasıl göründüğünü anlaması için CSS/JS dosyalarını taraması gerektiğini söylemek (Artık engellenmemelidir!). |
Örnek Senaryo: E-Ticaret Sitesi
Bir e-ticaret siteniz var. Google’ın taramasını istediğiniz en önemli sayfalar: Ürün Sayfaları ve Kategori Sayfaları.
Google’ın taramasını istemediğiniz sayfalar (çünkü bunlar ya yinelenen içeriktir ya da değerleri düşüktür): Sepet, Ödeme, Üye Girişi, Filtreler ($?fiyat=, ?renk=$).
Doğru Strateji:
User-agent: *
Disallow: /sepet/
Disallow: /uye-girisi/
Disallow: /*?fiyat=* Disallow: /*?sirala=*
# Bu engellemeler, Google'a "Bu sayfalarla uğraşma, diğer
# ürün sayfalarına bakmaya devam et" demiş olur.
Önemli Uyarı: Robots.txt Gizlemez, Yönlendirir
Unutulmaması gereken en önemli teknik detay şudur:
-
Disallowkomutu, Google’ın bir URL’yi tarayamayacağı anlamına gelir. - Ancak indeksleyemeyeceği anlamına gelmez.
Eğer harici bir kaynak (başka bir site) engellediğiniz bir URL’ye link verirse, Google URL’yi tarayamasa bile linkteki anchor text ve URL’nin kendisi nedeniyle sayfayı indeksleyebilir (Genellikle “Bu sayfa robots.txt tarafından engellenmiştir” uyarısıyla).
Nihai Kural: Gizlenmesi gereken hassas içeriğiniz varsa, robots.txt kullanmak yerine sayfaya noindex meta etiketi eklemeli veya şifre koruması kullanmalısınız. Robots.txt ise sadece tarama bütçesini yönlendirmek için kullanılmalıdır.
Duplicate Versions (HTTP / HTTPS / WWW) Sorunu
Sitenizin birden fazla versiyonunun erişilebilir olması, duplicate content sorununa ve otoritenin bölünmesine yol açar.
Olası Duplicate Versiyonlar:
1. https://example.com
2. https://www.example.com
3. http://example.com
4. http://www.example.com
Teknik olarak bunlar 4 farklı URL’dir ve Google bunları farklı siteler olarak görebilir.
Kontrol Yöntemi:
Her versiyonu tarayıcınıza yazın ve hangilerinin yüklendiğini kontrol edin. Birden fazla versiyon yükleniyorsa sorununuz var demektir.
Çözüm: 301 Redirect ve Canonical
1. Tercih Edilen Versiyonu Seçin
İki temel seçeneğiniz var:
-
https://example.com(www’suz) -
https://www.example.com(www’li)
Hangisini seçmelisiniz? Tamamen tercihinize bağlı. Ancak:
- Daha kısa URL’ler için: www’suz
- Subdomain esnekliği için: www’li
2. Diğer Tüm Versiyonları 301 Redirect ile Yönlendirin
.htaccess ile (Apache sunucular):
# www'suz versiyonu tercih ediyorsanız
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
# www'li versiyonu tercih ediyorsanız
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
Nginx ile:
# www'suz versiyonu tercih ediyorsanız
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
3. Canonical Tag Ekleyin
Her sayfanın <head> bölümüne:
<link rel="canonical" href="https://example.com/sayfa-adi/" />
4. Google Search Console’da Tercih Bildirin
Güncelleme: Tercih edilen versiyonu GSC’ye bildirmek artık zorunlu değildir. Google, 301 yönlendirmelerini ve canonical etiketlerini temel alarak tercihi otomatik belirler. Ancak mülkünüzü (https://www) GSC’ye doğru şekilde eklediğinizden emin olun.
Doğrulama:
- Farklı versiyonları tarayıcıda test edin
- 301 redirect’in çalıştığından emin olun
- Canonical tag’lerin doğru olduğunu kontrol edin
Redirect Chains ve Redirect Loops (301 Karmaşası)
Redirect chain’ler ve loop’lar, SEO performansınızı olumsuz etkiler çünkü:
- Sayfa yükleme hızını düşürür
- Crawl budget’ı israf eder
- Ranking gücünün tam aktarılmasını engeller
📊 İSTATİSTİK: Analiz edilen sitelerin yaklaşık %12’sinde redirect chain veya loop sorunu vardır.
Redirect Chain Nedir?
Bir URL’nin başka bir URL’ye, onun da başka bir URL’ye yönlendirmesidir.
❌ KÖTÜ: Redirect Chain
URL A → 301 → URL B → 301 → URL C → 301 → URL D
Kullanıcı: 4 adım bekler
Bot: Crawl budget israfı
SEO: Her adımda güç kaybı
✅ İYİ: Doğrudan Redirect
URL A → 301 → URL D
Kullanıcı: Hızlı yönlendirme
Bot: Verimli crawling
SEO: Maksimum güç aktarımı
Redirect Loop Nedir?
URL’lerin birbirlerine sonsuz döngü halinde yönlendirilmesidir.
❌ Redirect Loop:
URL X → 301 → URL Y → 301 → URL X
[Sonsuz döngü]
Sonuç: Sayfa yüklenemez, kullanıcı hata görür
Tespit Yöntemi:
1. Tarayıcı Geliştirici Araçları:
Chrome DevTools’u açın (F12) → Network → Sayfayı yenileyin → Status kodlarını kontrol edin
2. Online Araçlar:
- Redirect Checker: https://httpstatus.io/
- Screaming Frog SEO Spider
3. Ahrefs Site Audit:
Ahrefs Site Audit’te otomatik tespit edilir ve raporlanır.
Düzeltme:
Redirect Chain İçin:
- Chain’deki ara URL’leri belirleyin
- Tüm eski URL’leri final URL’ye doğrudan yönlendirin
- .htaccess veya sunucu yapılandırmasını güncelleyin
# Yanlış (Chain):
Redirect 301 /eski-sayfa /ara-sayfa
Redirect 301 /ara-sayfa /yeni-sayfa
# Doğru (Direct):
Redirect 301 /eski-sayfa /yeni-sayfa
Redirect 301 /ara-sayfa /yeni-sayfa
Redirect Loop İçin:
- Döngüyü oluşturan redirect’leri tespit edin
- Yanlış yapılandırılmış kuralı kaldırın veya düzeltin
- URL’lerin kendilerine yönlendirilmediğinden emin olun
Best Practices:
- Maksimum 1 redirect kullanın (kaynak → hedef)
- Redirect’leri düzenli kontrol edin
- Site yapısı değişikliklerinde redirect planlaması yapın
- 302 (temporary) yerine 301 (permanent) kullanın
Server Errors (5xx Hataları) ve SEO Etkisi
Server hataları, sunucunuzun bir sorunu olduğunu ve isteği yerine getiremediğini gösterir. Bu hatalar, arama motorlarının içeriğinizi taramasını ve indekslemesini engeller.
📊 İSTATİSTİK: Web sitelerinin yaklaşık %10’u düzenli olarak bir çeşit server hatası yaşamaktadır.
Yaygın 5xx Hataları:
| Hata Kodu | Adı | Açıklama |
|---|---|---|
| 500 | Internal Server Error | Sunucu bir hata oluştu ama ne olduğunu bilmiyor |
| 502 | Bad Gateway | Sunucu başka bir sunucudan geçersiz yanıt aldı |
| 503 | Service Unavailable | Sunucu aşırı yüklü veya bakımda |
| 504 | Gateway Timeout | Sunucu zamanında yanıt veremedi |
500 Internal Server Error:
En yaygın server hatası. Nedenleri:
- Yanlış yapılandırılmış .htaccess
- PHP hataları
- Sunucu kaynakları yetersiz
- Veritabanı bağlantı sorunları
- Plugin veya tema uyumsuzluğu
503 Service Unavailable:
Genellikle geçicidir. Nedenleri:
- Ani trafik artışı
- DDoS saldırısı
- Sunucu bakımı
- Kaynak limitleri aşıldı
Tespit Yöntemi:
1. Ahrefs Site Audit & Semrush Site Audit:
Site Audit → Issues → “5xx” ara
2. Google Search Console:
Coverage Report → Error → Server Error (5xx)
3. Server Logları:
cPanel veya hosting kontrolünde error logs kontrol edin.
Düzeltme:
Server hataları teknik uzmanlık gerektirir. Genellikle:
- Hosting sağlayıcınızla iletişime geçin
- Error loglarını inceleyin (hata mesajları ipucu verir)
- Son değişiklikleri geri alın (plugin, tema güncellemeleri)
- .htaccess dosyasını kontrol edin (syntax hataları)
- Sunucu kaynaklarını artırın (gerekirse hosting planını yükseltin)
WordPress Özel İpuçları:
500 Hatası için:
1. Tüm plugin'leri devre dışı bırakın
2. Varsayılan temaya geçin
3. PHP memory limit'i artırın (wp-config.php)
4. .htaccess'i yeniden oluşturun
Önleyici Tedbirler:
- Uptime monitoring kullanın (UptimeRobot, Pingdom)
- Düzenli backup alın
- CDN kullanın (trafik dağılımı için)
- Caching aktif edin
- Sunucu kaynaklarını izleyin
Crawl Budget Optimizasyonu
Crawl Budget Nedir?
Google, her web sitesine, içeriğini taramak için günde, haftada veya ayda ayıracağı sınırlı bir zaman ve kaynak tahsis eder. Buna Tarama Bütçesi denir.
Büyük Siteler İçin Kritik: Eğer sitenizde 100.000 sayfa varsa, ancak Google size günde sadece 5.000 sayfa tarama bütçesi ayırıyorsa, en önemli sayfalarınızın (yeni ürünler, güncel makaleler) taranması ve indekslenmesi gecikebilir.
Boşa Harcanan Bütçe: Googlebot, tarama bütçesini; filtreli sayfalar, sıralanmış URL’ler, teşekkür sayfaları, eski yorum dizinleri, veya zayıf ve tekrarlanan (thin/duplicate) içerik barındıran sayfaları tarayarak boşa harcayabilir.
Crawl Budget’ı Etkileyen Faktörler:
- Site popülaritesi: Popüler siteler daha sık taranır
- İçerik güncellik sıklığı: Sık güncellenen siteler daha sık taranır
- Sayfa sayısı: Çok sayfalı siteler için daha kritik
- Sunucu yanıt süresi: Yavaş sunucu = daha az tarama
- Site hataları: Çok hata = azalan tarama
Crawl Budget’ı Optimize Etme:
- ✅ Gereksiz sayfaları engelleyin
- ✅ Duplicate content’i azaltın
- ✅ Redirect chain’leri düzeltin
- ✅ 404 hatalarını minimize edin
- ✅ Sunucu hızını artırın
- ✅ Sitemap kullanın
- ✅ Düşük kaliteli sayfaları noindex yapın
Google Search Console’da Crawl Stats:
GSC → Settings → Crawl Stats
Burada görebilirsiniz:
- Günlük ortalama crawl istekleri
- Günlük ortalama indirilen veri
- Ortalama yanıt süresi
Kontrol Listesi: Crawling ve Indexing
Hemen Yapılması Gerekenler:
- Sitenizin indekslendiğini kontrol edin (site:yourdomain.com)
- Google Search Console’da “Sayfalar” raporunu inceleyin
- Robots.txt dosyanızı kontrol edin, önemli sayfaları engellememekten emin olun
- HTTP/HTTPS ve WWW duplicate’lerini kontrol edin
- Tercih ettiğiniz domain versiyonuna 301 redirect yapın
- Her sayfada canonical tag olduğundan emin olun
Haftalık/Aylık Bakım:
- Redirect chain ve loop taraması yapın
- 5xx server hatalarını kontrol edin
- Crawl budget kullanımını GSC’de izleyin
- Yeni hataları düzenli kontrol edin
Unutmayın:
- Crawling ve indexing, SEO’nun temel taşıdır
- İçeriğiniz mükemmel olabilir, ama indekslenmemişse görünmezsiniz
- Bu sorunların çoğu kolay düzeltilebilir ama büyük etki yaratır
- Düzenli monitoring yapın, sorunları erken tespit edin
2. Site Performansı ve UX
Site performansı ve kullanıcı deneyimi (UX), modern SEO’nun vazgeçilmez unsurlarıdır. Google, 2021’den itibaren “Page Experience” sinyallerini resmi sıralama faktörü olarak kullanmaya başladı. Hızlı, mobil uyumlu ve güvenli bir site oluşturmak, hem kullanıcılarınızı mutlu eder hem de arama motorlarında daha iyi sıralamanıza yardımcı olur.
Core Web Vitals: Google’ın Performans Metrikleri
Core Web Vitals, Google’ın kullanıcı deneyimini ölçmek için belirlediği üç temel metrikten oluşur ve resmi olarak bir sıralama faktörüdür.
Üç Temel Metrik:
| Metrik | Ne Ölçer | İdeal Değer | Kötü Değer |
|---|---|---|---|
| LCP (Largest Contentful Paint) | Yükleme hızı | ≤ 2.5 saniye | > 4.0 saniye |
| INP (Interaction to Next Paint) | Etkileşim yanıt süresi | ≤ 200 ms | > 500 ms |
| CLS (Cumulative Layout Shift) | Görsel kararlılık | ≤ 0.1 | > 0.25 |
1. LCP (Largest Contentful Paint) – Yükleme Hızı
LCP Nedir?
LCP, sayfanın görünen alanındaki (viewport) en büyük içerik öğesinin ne kadar sürede yüklendiğini ölçer. Bu, kullanıcının “sayfa yüklendi” algısını en iyi yansıtan metriktir.
LCP’ye Etki Eden Öğeler:
- Büyük görseller (
<img>) - Video poster görselleri
- Arka plan görselleri (CSS background-image)
- Büyük metin blokları
LCP Değerlendirmesi:
🟢 İYİ: 0 - 2.5 saniye
🟡 ORTA: 2.5 - 4.0 saniye
🔴 KÖTÜ: 4.0+ saniye
LCP’yi İyileştirme Stratejileri:
A. Görselleri Optimize Edin
<!-- ❌ KÖTÜ: Optimize edilmemiş büyük görsel -->
<img src="hero-image.jpg" alt="Ana görsel">
<!-- Dosya boyutu: 5MB -->
<!-- ✅ İYİ: Optimize edilmiş, modern format, lazy loading -->
<img
src="hero-image.webp"
alt="Ana görsel"
width="1200"
height="600"
loading="eager"
fetchpriority="high"
>
<!-- Dosya boyutu: 200KB -->
Görsel Optimizasyon Kontrol Listesi:
- WebP veya AVIF formatı kullanın (JPEG/PNG yerine)
- Görselleri sıkıştırın (TinyPNG, ImageOptim)
- Doğru boyutta görseller kullanın (gereksiz büyük görseller yüklemeyin)
- Width ve height attribute’leri ekleyin (CLS’yi de iyileştirir)
- Above-the-fold görseller için
loading="eager"vefetchpriority="high"kullanın - CDN kullanın (görselleri daha hızlı sunmak için)
B. Sunucu Yanıt Süresini İyileştirin (TTFB)
TTFB (Time To First Byte): Tarayıcının sunucudan ilk byte'ı
alması için geçen süre
İdeal TTFB: < 200ms
TTFB İyileştirme:
- Kaliteli hosting kullanın (shared hosting yerine VPS/dedicated)
- Server-side caching aktif edin (Redis, Memcached)
- CDN kullanın
- Veritabanı sorgularını optimize edin
- PHP versiyonunu güncel tutun
C. Render-Blocking Kaynaklarını Azaltın
<!-- ❌ KÖTÜ: Render-blocking CSS -->
<link rel="stylesheet" href="style.css">
<!-- ✅ İYİ: Kritik CSS inline, geri kalan async -->
<style>
/* Critical CSS inline olarak buraya */
body { margin: 0; font-family: Arial; }
.hero { background: #000; }
</style>
<link rel="preload" href="style.css" as="style" onload="this.rel='stylesheet'">
JavaScript için:
<!-- ❌ KÖTÜ: Render-blocking JS -->
<script src="script.js"></script>
<!-- ✅ İYİ: Defer veya async kullanın -->
<script src="script.js" defer></script>
<!-- veya -->
<script src="analytics.js" async></script>
Defer vs Async:
Defer: HTML parse → JS indir → HTML bitti → JS çalıştır
Async: HTML parse || JS indir → JS çalıştır (hemen)
Defer: Sıralı çalışma garantisi (bağımlılıklar için)
Async: Bağımsız scriptler için (analytics, ads)
D. Preload Kritik Kaynakları
<head>
<!-- LCP görselini önceden yükle -->
<link rel="preload" as="image" href="hero-image.webp">
<!-- Kritik fontları önceden yükle -->
<link rel="preload" as="font" href="font.woff2" type="font/woff2" crossorigin>
<!-- Kritik CSS'i önceden yükle -->
<link rel="preload" as="style" href="critical.css">
</head>
2. INP (Interaction to Next Paint) – Etkileşim Yanıt Hızı
INP Nedir?
INP, kullanıcı bir etkileşimde bulunduğunda (tıklama, tuşa basma, dokunma) sayfanın görsel olarak yanıt vermesi için geçen süreyi ölçer. 2024’te FID (First Input Delay) metriğinin yerini aldı.
INP Değerlendirmesi:
🟢 İYİ: 0 - 200 ms
🟡 ORTA: 200 - 500 ms
🔴 KÖTÜ: 500+ ms
INP’yi İyileştirme Stratejileri:
A. JavaScript Yürütme Süresini Azaltın
// ❌ KÖTÜ: Ana thread'i blokleyen uzun işlem
function processLargeData() {
const result = [];
for (let i = 0; i < 1000000; i++) {
result.push(complexCalculation(i));
}
return result;
}
// ✅ İYİ: İşi parçalara böl, requestIdleCallback kullan
function processLargeData() {
const batchSize = 1000;
let currentIndex = 0;
function processBatch() {
const end = Math.min(currentIndex + batchSize, data.length);
for (let i = currentIndex; i < end; i++) {
result.push(complexCalculation(i));
}
currentIndex = end;
if (currentIndex < data.length) {
requestIdleCallback(processBatch);
}
}
requestIdleCallback(processBatch);
}
B. Third-Party Script’leri Optimize Edin
<!-- Third-party scriptlerin etkisini azaltın -->
<!-- ❌ KÖTÜ: Senkron yükleme -->
<script src="https://third-party.com/script.js"></script>
<!-- ✅ İYİ: Async + gecikmeli yükleme -->
<script>
// Sayfa yüklendikten sonra third-party script'i yükle
window.addEventListener('load', function() {
setTimeout(function() {
const script = document.createElement('script');
script.src = 'https://third-party.com/script.js';
script.async = true;
document.body.appendChild(script);
}, 3000); // 3 saniye gecikme
});
</script>
C. Event Handler’ları Optimize Edin
// ❌ KÖTÜ: Her event için ağır işlem
button.addEventListener('click', function() {
// Ağır hesaplama
const result = expensiveCalculation();
updateUI(result);
});
// ✅ İYİ: Debounce/throttle kullanın
const debouncedHandler = debounce(function() {
const result = expensiveCalculation();
updateUI(result);
}, 300);
button.addEventListener('click', debouncedHandler);
// Debounce utility function
function debounce(func, wait) {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func(...args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
D. CSS Animasyonları için GPU Kullanın
/* ❌ KÖTÜ: CPU-intensive animasyon */
.element {
transition: left 0.3s, top 0.3s;
}
.element:hover {
left: 100px;
top: 100px;
}
/* ✅ İYİ: GPU-accelerated animasyon */
.element {
transition: transform 0.3s;
will-change: transform;
}
.element:hover {
transform: translate(100px, 100px);
}
INP İyileştirme Kontrol Listesi:
- JavaScript bundle boyutunu küçültün (code splitting)
- Gereksiz JavaScript’leri kaldırın
- Third-party script’leri async yükleyin
- Uzun işlemleri Web Workers’a taşıyın
- Event listener’ları optimize edin (debounce/throttle)
- CSS animasyonları için transform ve opacity kullanın
3. CLS (Cumulative Layout Shift) – Görsel Kararlılık
CLS Nedir?
CLS, sayfa yüklenirken öğelerin beklenmedik şekilde yer değiştirmesini ölçer. Kullanıcı bir butona tıklamak üzereyken öğelerin kayması kötü bir deneyimdir.
CLS Değerlendirmesi:
🟢 İYİ: 0 - 0.1
🟡 ORTA: 0.1 - 0.25
🔴 KÖTÜ: 0.25+
Yaygın CLS Sebepleri:
- Boyut belirtilmemiş görseller ve videolar
- Dinamik olarak eklenen içerik (reklamlar)
- Web fontları yüklenirken metin değişimi
- Async yüklenen içerikler
CLS’yi İyileştirme Stratejileri:
A. Görsellere ve Videolara Boyut Verin
<!-- ❌ KÖTÜ: Boyut yok, layout shift olur -->
<img src="product.jpg" alt="Ürün">
<!-- ✅ İYİ: Width ve height belirtilmiş -->
<img
src="product.jpg"
alt="Ürün"
width="800"
height="600"
>
<!-- ✅ DAHA İYİ: Aspect-ratio ile responsive -->
<img
src="product.jpg"
alt="Ürün"
style="aspect-ratio: 4/3; width: 100%; height: auto;"
>
CSS ile:
/* Responsive görseller için aspect-ratio kullanın */
img {
width: 100%;
height: auto;
aspect-ratio: 16 / 9;
}
B. Reklamlar ve Embed’ler için Yer Ayırın
<!-- ❌ KÖTÜ: Reklam için yer ayrılmamış -->
<div id="ad-container">
<!-- Reklam async yükleniyor -->
</div>
<!-- ✅ İYİ: Minimum yükseklik ile yer ayrılmış -->
<div id="ad-container" style="min-height: 250px;">
<!-- Reklam yüklenene kadar 250px yer ayrılmış -->
</div>
YouTube Embed için:
<!-- Aspect-ratio ile embed container -->
<div style="position: relative; padding-bottom: 56.25%; height: 0;">
<iframe
src="https://www.youtube.com/embed/VIDEO_ID"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
frameborder="0"
allowfullscreen>
</iframe>
</div>
C. Font Loading Stratejisini Optimize Edin
/* ❌ KÖTÜ: FOIT (Flash of Invisible Text) */
@font-face {
font-family: 'CustomFont';
src: url('font.woff2');
}
/* ✅ İYİ: font-display ile kontrol */
@font-face {
font-family: 'CustomFont';
src: url('font.woff2');
font-display: swap; /* veya optional */
}
Font-display seçenekleri:
auto: Tarayıcı kararı (genellikle block)
block: 3 saniye bekle, sonra fallback (FOIT)
swap: Hemen fallback göster, font gelince değiştir (FOUT)
fallback: 100ms bekle, 3 saniye fallback, sonra vazgeç
optional: Hızlı bağlantıda yükle, yavaşsa vazgeç
Öneri: Çoğu durum için font-display: swap idealdir.
D. Dinamik İçeriği Doğru Yönetin
/* Dinamik yüklenen içerik için placeholder */
.content-placeholder {
min-height: 400px;
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
background-size: 200% 100%;
animation: loading 1.5s infinite;
}
@keyframes loading {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
CLS İyileştirme Kontrol Listesi:
- Tüm görsellere width ve height attribute’leri ekleyin
- CSS aspect-ratio kullanın
- Reklamlar için yer ayırın (min-height)
- Web fontları için font-display: swap kullanın
- Dinamik içerik için placeholder kullanın
- Banner’lar için sabit alan ayırın
- Animasyonları transform ile yapın (layout değişikliği yerine)
Core Web Vitals Nasıl Ölçülür?
1. Google Search Console
GSC → Core Web Vitals → Open Report
- Mobil ve masaüstü için ayrı raporlar
- “Poor”, “Needs Improvement”, “Good” kategorileri
- Hangi URL’lerin sorunlu olduğunu gösterir
2. PageSpeed Insights
URL: https://pagespeed.web.dev/
- Hem lab hem de field data gösterir
- Spesifik iyileştirme önerileri sunar
- Her metrik için detaylı analiz
3. Chrome DevTools (Lighthouse)
Chrome DevTools → Lighthouse → Performance
- Detaylı metrikler
- Opportunities ve Diagnostics
- Film strip view (yükleme süreci)
Mobile-Friendliness (Mobil Uyumluluk)
Google, 2019’dan itibaren “mobile-first indexing” kullanıyor. Yani sitenizin mobil versiyonunu öncelikli olarak indeksliyor ve sıralıyor.
Mobil Uyumluluğun Önemi:
- Google primarily mobil versiyonu kullanır
- Mobil trafik masaüstü trafiği geçti
- Mobil UX doğrudan ranking faktörü
Mobil Uyumlu Tasarım Prensipleri:
1. Responsive Design
/* Mobile-first approach */
.container {
width: 100%;
padding: 15px;
}
/* Tablet */
@media (min-width: 768px) {
.container {
max-width: 720px;
margin: 0 auto;
}
}
/* Desktop */
@media (min-width: 1024px) {
.container {
max-width: 960px;
}
}
2. Viewport Meta Tag
<!-- ✅ Zorunlu: Responsive davranış için -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- ❌ Kullanmayın: Zoom'u engeller (UX sorunu) -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
3. Dokunma Hedefleri (Touch Targets)
/* Butonlar ve linkler en az 48x48 px olmalı */
.button {
min-height: 48px;
min-width: 48px;
padding: 12px 24px;
/* Dokunma hedefleri arası boşluk */
margin: 8px;
}
4. Okunabilir Font Boyutları
/* ❌ KÖTÜ: Çok küçük font */
body {
font-size: 12px;
}
/* ✅ İYİ: Okunabilir font boyutu */
body {
font-size: 16px; /* Mobilde minimum */
line-height: 1.5;
}
h1 {
font-size: 2rem; /* 32px */
}
5. Yatay Kaydırmayı Önleyin
/* Tüm elementlerin container'a sığmasını sağlayın */
img, video, iframe {
max-width: 100%;
height: auto;
}
body {
overflow-x: hidden;
}
Mobil Uyumluluk Testi:
1. Google Mobile-Friendly Test
URL: https://search.google.com/test/mobile-friendly
2. Google Search Console
GSC → Mobile Usability
Sorunları gösterir:
- Viewport not set
- Text too small to read
- Clickable elements too close
- Content wider than screen
3. Responsive Design Mode
Chrome DevTools → Toggle Device Toolbar (Ctrl+Shift+M)
Farklı cihaz boyutlarında test edin.
Yaygın Mobil Uyumluluk Sorunları:
| Sorun | Açıklama | Çözüm |
|---|---|---|
| Viewport yok | Meta viewport tag eksik |
<meta name="viewport"> ekleyin |
| Text too small | Font boyutu < 16px | Font boyutunu artırın |
| Touch targets | Butonlar çok küçük veya yakın | 48x48px minimum boyut, 8px boşluk |
| Content overflow | İçerik ekrandan taşıyor | max-width: 100% kullanın |
| Flash kullanımı | Flash mobilde çalışmaz | HTML5 kullanın |
HTTPS Kullanımı
HTTPS (Hypertext Transfer Protocol Secure), web siteniz ile kullanıcılar arasındaki iletişimi şifreler. 2014’ten beri resmi sıralama faktörüdür.
HTTPS’nin Faydaları:
- ✅ SEO: Hafif sıralama avantajı
- ✅ Güvenlik: Veri şifreleme, MITM saldırılarını önleme
- ✅ Güven: Tarayıcılarda “Güvenli” rozeti
- ✅ HTTP/2: Sadece HTTPS ile çalışır (daha hızlı)
- ✅ Chrome Gereksinimi: Modern tarayıcı özellikleri için zorunlu
- ✅ Kullanıcı Güveni: Kullanıcılar HTTPS bekler
HTTP vs HTTPS:
❌ HTTP: http://example.com
Tarayıcı: "Güvenli Değil" uyarısı
Veri: Şifrelenmemiş
✅ HTTPS: https://example.com
Tarayıcı: 🔒 Kilit ikonu
Veri: ŞifrelenmişHTTPS Kontrol:
- Sitenizi ziyaret edin, kilit ikonu göründüğünü kontrol edin
- Chrome DevTools → Security → View Certificate
- SSL Labs Test: https://www.ssllabs.com/ssltest/
Pop-up Kullanımı
Google, 2017’den itibaren mobilde kullanıcı deneyimini engelleyen pop-up’ları cezalandırıyor.
Intrusive Interstitial Nedir?
Ana içeriği kapatan ve kullanıcının içeriğe erişimini engelleyen pop-up’lar, overlay’ler ve modallar.
Müdahaleci Kabul Edilen Pop-up’lar:
❌ Sayfa yüklenir yüklenmez tam ekran pop-up
❌ Ana içeriği tamamen kapatan standalone interstitial
❌ Above-the-fold alanını kaplayan layout (içerik aşağıda)
❌ İçeriğe erişmeden önce kapatılması gereken pop-up
İzin Verilen Pop-up’lar:
✅ Yasal zorunluluklar (Çerez bildirimi, yaş doğrulama)
✅ Login dialog’ları (paywall arkasındaki içerik)
✅ Küçük banner’lar (ekranın makul bir kısmını kaplar)
✅ Exit-intent pop-up’lar (kullanıcı ayrılırken)
✅ Scroll-triggered pop-up’lar (kullanıcı içerikle etkileşime geçtikten sonra)
İyi Pop-up Uygulamaları:
1. Zamanlama
// ❌ KÖTÜ: Hemen göster
window.addEventListener('load', function() {
showPopup();
});
// ✅ İYİ: Kullanıcı etkileşime geçtikten sonra
let scrolled = false;
window.addEventListener('scroll', function() {
if (window.scrollY > 1000 && !scrolled) {
scrolled = true;
setTimeout(showPopup, 3000); // 3 saniye sonra
}
});
2. Boyut
/* Ekranın en fazla %30-40'ını kaplasın */
.popup {
max-width: 400px;
max-height: 300px;
/* Mobilde daha küçük */
@media (max-width: 768px) {
max-width: 90%;
max-height: 40vh;
}
}
3. Kolay Kapatma
<div class="popup">
<!-- Büyük, açık kapatma butonu -->
<button class="close-btn" aria-label="Kapat">✕</button>
<!-- Arka plana tıklayarak da kapatılabilir -->
<div class="popup-content">
<!-- İçerik -->
</div>
</div>
<style>
.close-btn {
position: absolute;
top: 10px;
right: 10px;
width: 40px;
height: 40px;
font-size: 24px;
}
</style>
4. Exit-Intent (Kullanıcı ayrılırken)
// Kullanıcı sayfadan ayrılmaya çalıştığında göster
document.addEventListener('mouseleave', function(e) {
if (e.clientY < 0 && !popupShown) {
showPopup();
popupShown = true;
}
});
Çerez Bildirimi (GDPR/KVKK):
<!-- ✅ İYİ: Küçük, alt tarafta -->
<div class="cookie-banner" style="
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: #333;
color: #fff;
padding: 15px;
font-size: 14px;
z-index: 9999;
">
<p>Bu site çerez kullanıyor. <a href="/cerez-politikasi">Detaylı bilgi</a></p>
<button onclick="acceptCookies()">Kabul Et</button>
</div>
Pop-up Kullanımı Nasıl Olmalı?
- Sayfa yüklendiğinde hemen göstermeyin
- Kullanıcı içerikle etkileşime geçtikten sonra gösterin
- Mobilde ekranın %40’ından fazlasını kaplamayın
- Kolay kapatma butonu ekleyin
- Arka plana tıklayarak kapatmaya izin verin
- Exit-intent kullanın
- A/B test yapın (conversion vs SEO etkisi)
Performans ve UX İyileştirme Yol Haritası
Performans ve UX İyileştirme Yol Haritası”, site hızını ve kullanıcı deneyimini hangi sırayla, hangi adımlarla iyileştireceğini anlatan pratik bir aksiyon planıdır. Acil, kısa, orta ve uzun vadeli işleri ayırarak hem Core Web Vitals’ı hem de genel kullanıcı deneyimini sistematik şekilde optimize etmeni sağlar. Hadi bunu önceliklendirelim;
Öncelikli Maddeler:
- Google Search Console’da Core Web Vitals’ı kontrol edin
- Sitenizi PageSpeed Insights ile test edin
- HTTPS aktif değilse hemen aktif edin
- Viewport meta tag’i ekleyin
- Müdahaleci pop-up’ları kaldırın veya optimize edin
Kısa Vadeli Öncelikler:
- Görselleri optimize edin (WebP, sıkıştırma)
- Görsellere width/height attribute ekleyin
- CSS/JS minify ve combine edin
- Browser caching aktif edin
- CDN kullanmaya başlayın
Orta Vadeli Öncelikler:
- Above-the-fold CSS’i inline yapın
- JavaScript’leri defer/async yapın
- Font loading stratejisini optimize edin
- Third-party script’leri gözden geçirin
- Server yanıt süresini iyileştirin
Uzun Vadeli Planlama:
- HTTP/2 veya HTTP/3’e geçin
- Progressive Web App (PWA) düşünün
- Advanced caching stratejileri
- Code splitting ve lazy loading
- Web Workers kullanmayı değerlendirin
Performans İzleme ve Sürekli İyileştirme
Düzenli Kontrol:
- Haftalık: PageSpeed Insights kontrolü
- Aylık: Full Core Web Vitals audit
- Çeyreklik: Detaylı performance audit
- Sürekli: Real User Monitoring (RUM) – Google Analytics
Monitoring Araçları:
- Google Search Console (Field data – gerçek kullanıcılar)
- PageSpeed Insights (Lab + Field data)
- Chrome UX Report (CrUX)
- Lighthouse CI (Otomatik testler için)
- WebPageTest (Detaylı waterfall analizi)
- GTmetrix (Performans raporları)
Unutmayın:
- Performans optimizasyonu sürekli bir süreçtir
- Her güncelleme sonrası performansı test edin
- Gerçek kullanıcı verilerine odaklanın (field data)
- Lab data iyi olabilir ama field data kötü olabilir
- Mobile-öncelikli düşünün, masaüstü ikinci planda
3. Site Mimarisi ve Navigation
Site mimarisi, web sitenizin sayfalarının nasıl organize edildiği ve birbirine bağlandığıdır. İyi bir site mimarisi, hem kullanıcıların hem de arama motorlarının sitenizde kolayca gezinmesini sağlar. Kötü bir mimari ise değerli içeriğinizin kaybolmasına ve düşük sıralamalara yol açar.
Site Mimarisi Nedir ve Neden Bu Kadar Önemlidir?
Site mimarisi, bir web sitesindeki tüm sayfaların nasıl organize edildiğini, birbirine nasıl bağlandığını ve hem kullanıcılar hem de arama motorları tarafından nasıl keşfedildiğini belirleyen yapısal sistemdir.
Basitçe:
Site mimarisi = Sayfalar + Hiyerarşi + İç bağlantılar + Navigasyon mantığı
İçeriğiniz ne kadar kaliteli olursa olsun, yanlış kurgulanmış bir site mimarisi, bu içeriğin:
- Geç keşfedilmesine,
- Geç indekslenmesine,
- Yanlış değerlendirilmesine,
- Veya hiç sıralama alamamasına neden olabilir.
Bu yüzden site mimarisi, SEO’nun “görünmeyen ama belirleyici” katmanıdır.
İdeal Site Yapısı: Hiyerarşik ve Mantıksal
İyi bir site yapısı, bir ağaç gibi hiyerarşik olmalıdır: Ana sayfadan kategorilere, kategorilerden alt kategorilere ve oradan da içerik sayfalarına doğru bir akış olmalıdır.
İdeal Site Yapısı Görseli:
Ana Sayfa
|
_______________________________________________
| | | |
Kategori 1 Kategori 2 Kategori 3 Kategori 4
| | | |
_________ _________ _________ _________
| | | | | | | |
Alt Kat. Alt Kat. Alt Kat. Alt Kat. Alt Kat. Alt Kat. Alt Kat. Alt Kat.
| | | | | | | |
Sayfalar Sayfalar Sayfalar Sayfalar Sayfalar Sayfalar Sayfalar SayfalarE-Ticaret Örneği:
Ana Sayfa (example.com)
|
├── Elektronik (/elektronik)
| ├── Telefonlar (/elektronik/telefonlar)
| | ├── iPhone 15 Pro (/elektronik/telefonlar/iphone-15-pro)
| | ├── Samsung S24 (/elektronik/telefonlar/samsung-s24)
| | └── ...
| ├── Bilgisayarlar (/elektronik/bilgisayarlar)
| └── Tabletler (/elektronik/tabletler)
|
├── Giyim (/giyim)
| ├── Erkek (/giyim/erkek)
| ├── Kadın (/giyim/kadin)
| └── Çocuk (/giyim/cocuk)
|
└── Ev & Yaşam (/ev-yasam)
├── Mobilya (/ev-yasam/mobilya)
└── Dekorasyon (/ev-yasam/dekorasyon)İyi Site Mimarisinin Özellikleri:
✅ Sığ Derinlik: Her sayfa, ana sayfadan maksimum 3-4 tıklama uzaklıkta
✅ Mantıksal Gruplama: İlgili içerikler bir arada
✅ Ölçeklenebilir: Yeni içerik eklenebilir
✅ URL Yapısı ile Uyumlu: URL’ler hiyerarşiyi yansıtır
✅ Breadcrumb Uyumlu: Kullanıcı nerede olduğunu bilir
Kötü Site Mimarisinin Sorunları:
❌ Çok Derin: İçeriğe ulaşmak için 5+ tıklama
❌ Düz Yapı: Her şey ana sayfaya bağlı (binlerce link)
❌ Kötü Kategorilendirme: İlgisiz içerikler bir arada
❌ Orphan Sayfalar: Hiçbir internal link almayan sayfalar
❌ Karmaşık: Kullanıcı ve bot kaybolur
Tıklama Derinliği (Click Depth)
Tıklama derinliği, bir sayfaya ana sayfadan kaç tıklamayla ulaşılabildiğini gösterir. Google, daha sığ derinlikteki sayfaları daha önemli olarak değerlendirir.
Tıklama Derinliği Sınıflandırması:
DerinlikSayfa TipiÖncelik0 tıklamaAna SayfaEn Yüksek1 tıklamaAna kategoriler, hizmetlerÇok Yüksek2 tıklamaAlt kategoriler, önemli içeriklerYüksek3 tıklamaÜrünler, blog yazılarıOrta4+ tıklamaDerin içerikler, arşivDüşük
Kural: Önemli sayfalarınız 3 tıklamadan fazla uzakta olmamalıdır.
Örnek:
✅ İYİ:
Ana Sayfa → Elektronik → Telefonlar → iPhone 15 Pro
(3 tıklama)
❌ KÖTÜ:
Ana Sayfa → Ürünler → Kategoriler → Elektronik → Mobil → Akıllı Telefonlar → Apple → iPhone → iPhone 15 Pro
(8 tıklama)Tıklama Derinliğini Azaltma:
- Yatay genişletme: Daha fazla kategori, daha az derinlik
- Internal linking: Derin sayfalara kısayol linkleri
- Hub pages: Ana konular için merkezi sayfalar
- Footer/Header links: Önemli sayfalara her yerden erişim
- Sitemap: Tüm sayfaları listele
Internal Linking (İç Bağlantı) Stratejisi
Internal linkler, sitenizin bir sayfasından başka bir sayfasına verdiğiniz linklerdir. SEO’nun en güçlü araçlarından biridir.
Internal Linking’in Faydaları:
- Crawling: Botların yeni sayfaları keşfetmesine yardımcı olur
- Indexing: Sayfaların indekslenmesini hızlandırır
- PageRank Flow: Otoritenin sayfalar arasında dağıtılması
- Kullanıcı Deneyimi: Ziyaretçilerin ilgili içeriği bulması
- Keyword Relevance: Anchor text ile konu ilişkisi kurma
Internal Link Türleri:
1. Navigation Links (Navigasyon Linkleri)
Menü, header, footer ve sidebar’daki linkler.
html
<!-- Header Navigation -->
<nav>
<ul>
<li><a href="/">Ana Sayfa</a></li>
<li><a href="/hakkimizda">Hakkımızda</a></li>
<li><a href="/hizmetler">Hizmetler</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/iletisim">İletişim</a></li>
</ul>
</nav>2. Contextual Links (İçerik İçi Linkler)
İçerik içinde, doğal olarak yer alan linkler. En değerli link türüdür.
html
<p>
SEO çalışmalarınızda
<a href="/anahtar-kelime-arastirmasi">anahtar kelime araştırması</a>
yapmak kritik öneme sahiptir. Doğru anahtar kelimeleri belirledikten sonra,
<a href="/on-page-seo">on-page optimizasyon</a> yaparak içeriğinizi
güçlendirebilirsiniz.
</p>3. Breadcrumb Links
Kullanıcının sayfadaki konumunu gösteren linkler.
html
<nav aria-label="breadcrumb">
<ol>
<li><a href="/">Ana Sayfa</a></li>
<li><a href="/elektronik">Elektronik</a></li>
<li><a href="/elektronik/telefonlar">Telefonlar</a></li>
<li aria-current="page">iPhone 15 Pro</li>
</ol>
</nav>4. Related Posts / Benzer İçerikler
Makale sonunda veya sidebar’da ilgili içeriklere linkler.
html
<aside class="related-posts">
<h3>İlgili Makaleler</h3>
<ul>
<li><a href="/link-building-stratejileri">Link Building Stratejileri</a></li>
<li><a href="/backlink-analizi">Backlink Analizi Nasıl Yapılır?</a></li>
<li><a href="/guest-posting">Guest Posting Rehberi</a></li>
</ul>
</aside>Internal Linking Best Practices:
1. Tanımlayıcı Anchor Text Kullanın
html
<!-- ❌ KÖTÜ: Generic anchor text -->
<a href="/seo-rehberi">buraya tıklayın</a>
<a href="/urunler">daha fazla bilgi</a>
<!-- ✅ İYİ: Descriptive anchor text -->
<a href="/seo-rehberi">kapsamlı SEO rehberi</a>
<a href="/urunler">tüm ürünlerimiz</a>2. Relevant (İlgili) Sayfalara Link Verin
✅ İYİ:
"iPhone 15 Özellikleri" makalesinden
→ "iPhone 15 vs iPhone 14 Karşılaştırması"
❌ KÖTÜ:
"iPhone 15 Özellikleri" makalesinden
→ "Pasta Tarifleri"3. Dofollow Kullanın (Internal Linklerde)
html
<!-- ✅ İYİ: Internal linkler varsayılan olarak dofollow -->
<a href="/diger-sayfa">Link</a>
<!-- ❌ KÖTÜ: Internal linkleri nofollow yapma -->
<a href="/diger-sayfa" rel="nofollow">Link</a>İstisna: Login, kayıt, sepet gibi sayfalara nofollow kullanabilirsiniz.
4. Link Sayısını Dengeyin
- Sayfada aşırı fazla internal link olmasın (spam sinyali)
- Çok az link de olmasın (bağlantısız kalan sayfalar)
- Makale içi: 2-5 contextual link ideal
- Toplam link (nav dahil): 100-150 altında tutun
5. Derin Sayfalara Link Verin
Sadece kategorilere değil, derin içeriklere de link verin:
✅ İYİ:
Ana Sayfa → Blog İndeksi → Spesifik Makale
Ayrıca:
Ana Sayfa → Doğrudan Popüler Makaleye6. Link Dilution’dan Kaçının
Aynı sayfaya birden fazla link vermeyin (ilk link sayılır).
html
<!-- ❌ KÖTÜ: Aynı sayfaya 3 link -->
<a href="/seo-rehberi">SEO Rehberi</a>
...
<a href="/seo-rehberi">rehber sayfası</a>
...
<a href="/seo-rehberi">buraya tıklayın</a>
<!-- ✅ İYİ: Bir link yeterli -->
<a href="/seo-rehberi">kapsamlı SEO rehberi</a>Internal Linking Stratejileri:
A. Hub and Spoke Model (Merkez ve Kol Modeli)
Hub Page
(Ana Konu Sayfası)
|
______________|______________
| | | | |
Spoke Spoke Spoke Spoke Spoke
(Alt (Alt (Alt (Alt (Alt
Konu 1) Konu 2) Konu 3) Konu 4) Konu 5)
Hub Page: "SEO Rehberi"
Spoke Pages:
- "Anahtar Kelime Araştırması"
- "On-Page SEO"
- "Link Building"
- "Technical SEO"
- "SEO Araçları"
Her spoke, hub'a geri link verir.B. Content Silo Structure (İçerik Silolama)
İlgili içerikleri gruplar halinde organize etmek.
Silo 1: SEO
├── On-Page SEO
├── Off-Page SEO
└── Technical SEO
(Silo içi linkler yoğun)
Silo 2: İçerik Pazarlama
├── Blog Yazma
├── Copywriting
└── İçerik Stratejisi
(Silo içi linkler yoğun)
Silolar arası minimal linkC. Pillar-Cluster Model
Pillar Page: Geniş, kapsamlı ana sayfa
|
├── Cluster 1 (spesifik alt konu)
├── Cluster 2 (spesifik alt konu)
├── Cluster 3 (spesifik alt konu)
└── Cluster 4 (spesifik alt konu)
Örnek:
Pillar: "Dijital Pazarlama Rehberi"
Clusters:
- SEO Temelleri
- Google Ads Stratejileri
- Sosyal Medya Pazarlama
- E-mail MarketingOrphan Pages (Yetim Sayfalar)
Orphan page, sitede hiçbir internal link almayan sayfalardır. Bu sayfalar:
- Botlar tarafından keşfedilmesi zor
- Düşük PageRank
- Düşük görünürlük
📊 İSTATİSTİK: 50,000+ domain analizine göre, web sitelerinin %69’unda en az bir orphan page bulunmaktadır. Bu çok yaygın ve genellikle gözden kaçan bir sorundur.
Orphan Page Tespiti:
1. Google Analytics
GA → Behavior → Site Content → All Pages
Sitemap’te olup GA’de trafik almayan sayfalar orphan olabilir.
2. Screaming Frog
Screaming Frog → Crawl → Orphan Pages
3. Ahrefs Site Audit
Site Audit → Issues → “Orphan pages”
Orphan Page Çözümü:
- Internal link ekleyin: İlgili sayfalardan link verin
- Navigation’a ekleyin: Önemliyse menüye ekleyin
- Related posts: Benzer içeriklerle bağlayın
- Sitemap: XML sitemap’e eklenmişse Google bulur (ama yeterli değil)
- Silin: Gerçekten gereksizse 404 verin veya 301 redirect yapın
Breadcrumbs (Kırıntı İzi)
Breadcrumb, kullanıcının sitedeki konumunu gösteren ve geçmiş sayfalara dönmesini sağlayan navigasyon yardımcısıdır.
Breadcrumb Örneği:
Ana Sayfa > Elektronik > Telefonlar > iPhone 15 ProBreadcrumb’ın Faydaları:
✅ Kullanıcı Deneyimi: Nerede olduğunu bilir, kolayca geri döner ✅ SEO: Internal linking güçlenir ✅ SERP Görünümü: Google arama sonuçlarında gösterilir ✅ Tıklama Oranı: SERP’te daha çekici görünüm
SERP’te Breadcrumb Görünümü:
example.com › Elektronik › Telefonlar
iPhone 15 Pro İnceleme ve Özellikleri
iPhone 15 Pro'nun tüm özelliklerini, fiyatını ve kullanıcı
yorumlarını inceleyin...Breadcrumb Türleri:
1. Location-Based (Konum Bazlı)
En yaygın türdür. Site hiyerarşisini gösterir.
Ana Sayfa > Kategori > Alt Kategori > Sayfa2. Attribute-Based (Özellik Bazlı)
E-ticaret filtrelerinde kullanılır.
Ana Sayfa > Telefonlar > Marka: Apple > Renk: Siyah3. History-Based (Geçmiş Bazlı)
Kullanıcının gezinme geçmişini gösterir (önerilmez, SEO faydası yok).
Ana Sayfa > Blog > Başka Sayfa > Mevcut SayfaBreadcrumb Best Practices:
✅ Her sayfada gösterin (ana sayfa hariç)
✅ Schema markup ekleyin (Google Rich Results için)
✅ Kısa tutun (maksimum 4-5 seviye)
✅ Tıklanabilir yapın (son öğe hariç)
✅ URL yapısıyla uyumlu olsun
❌ JavaScript ile dinamik oluşturmayın (SEO sorunu)
❌ Sayfa başlığını tekrar etmeyin
Breadcrumb Ne Zaman Kullanılmaz?
- Küçük siteler (5-10 sayfa)
- Düz hiyerarşi (sadece ana sayfa + içerik sayfaları)
- Tek seviye blog siteleri
Site Mimarisi Optimizasyonu: Pratik Adımlar
1. Mevcut Yapınızı Analiz Edin
A. Site Crawl:
Screaming Frog veya Ahrefs Site Audit kullanarak:
- Tüm sayfaları listeleyin
- Tıklama derinliğini görün
- Orphan sayfaları tespit edin
- Internal link dağılımını analiz edin
B. Görselleştirin:
Excel veya araçlarla site haritası oluşturun:
- Ana sayfadan her sayfaya kaç tıklama?
- Hangi sayfalar en çok internal link alıyor?
- Hangi sayfalar hiç link almıyor? (orphan)2. İdeal Yapıyı Planlayın
Kategorileri Belirleyin:
Sorular:
- Ana konularım neler?
- Bu konular kaç alt kategoriye ayrılabilir?
- Maksimum kaç seviye gerekli?
Örnek Plan:
Seviye 1: 4-8 ana kategori
Seviye 2: Her kategoride 3-6 alt kategori
Seviye 3: İçerik sayfaları3. URL Yapısını Uyumlu Hale Getirin
❌ KÖTÜ:
/p?id=123
/sayfa/12345/
✅ İYİ:
/kategori/alt-kategori/sayfa-adi
/blog/seo/teknik-seo-rehberi4. Navigation Menüsünü Optimize Edin
html
<!-- Temiz, semantik navigation -->
<nav role="navigation" aria-label="Ana Menü">
<ul>
<li><a href="/">Ana Sayfa</a></li>
<li>
<a href="/hizmetler">Hizmetler</a>
<ul>
<li><a href="/hizmetler/seo">SEO</a></li>
<li><a href="/hizmetler/web-tasarim">Web Tasarım</a></li>
<li><a href="/hizmetler/sosyal-medya">Sosyal Medya</a></li>
</ul>
</li>
<li><a href="/blog">Blog</a></li>
<li><a href="/hakkimizda">Hakkımızda</a></li>
<li><a href="/iletisim">İletişim</a></li>
</ul>
</nav>5. Internal Linking Programı Oluşturun
Sistemik Yaklaşım:
Haftalık:
- Yeni içerik yayınlarken 2-3 ilgili eski içeriğe link verin
- Eski içeriklere yeni içerikten link ekleyin
Aylık:
- En çok trafik alan sayfaları inceleyin
- Bu sayfalardan önemli ama az trafik alan sayfalara link ekleyin
- Orphan sayfaları bulun ve link ekleyin
Çeyreklik:
- Full site audit yapın
- Internal link dağılımını analiz edin
- Önemli sayfaların link sayısını kontrol edin6. Footer ve Sidebar Linklerini Stratejik Kullanın
html
<!-- Footer - Önemli sayfalara site-wide linkler -->
<footer>
<div class="footer-links">
<div>
<h4>Ürünler</h4>
<ul>
<li><a href="/urunler/kategori-1">Kategori 1</a></li>
<li><a href="/urunler/kategori-2">Kategori 2</a></li>
</ul>
</div>
<div>
<h4>Şirket</h4>
<ul>
<li><a href="/hakkimizda">Hakkımızda</a></li>
<li><a href="/kariyer">Kariyer</a></li>
<li><a href="/basin">Basın</a></li>
</ul>
</div>
<div>
<h4>Destek</h4>
<ul>
<li><a href="/sss">SSS</a></li>
<li><a href="/iletisim">İletişim</a></li>
<li><a href="/yardim">Yardım Merkezi</a></li>
</ul>
</div>
</div>
</footer>7. Breadcrumb Ekleyin
Tüm içerik sayfalarına breadcrumb navigation ekleyin (yukarıdaki kod örneklerine bakın).
Faceted Navigation (Filtrelenmiş Navigasyon)
E-ticaret siteleri için kritik bir konu. Faceted navigation, kullanıcıların ürünleri filtrelemesine olanak tanır (marka, fiyat, renk, beden vs.).
Faceted Navigation Sorunu:
Her filtre kombinasyonu yeni bir URL oluşturur:
/telefonlar
/telefonlar?marka=apple
/telefonlar?marka=apple&renk=siyah
/telefonlar?marka=apple&renk=siyah&hafiza=256gb
/telefonlar?renk=siyah&marka=apple (duplicate!)
Sonuç: Binlerce duplicate URL!Faceted Navigation Çözümleri:
1. Canonical Tag Kullanımı (En Yaygın)
html
<!-- Filtrelenmiş URL: /telefonlar?marka=apple&renk=siyah -->
<link rel="canonical" href="https://example.com/telefonlar" />
<!-- Tüm filtre kombinasyonları ana kategori sayfasına işaret eder -->2. Noindex Kullanımı
html
<!-- Filtrelenmiş sayfalar için -->
<meta name="robots" content="noindex, follow">
<!-- Follow: Linkleri takip et, ama sayfayı indeksleme -->3. Robots.txt ile Engelleme
User-agent: *
Disallow: /*?marka=
Disallow: /*?renk=
Disallow: /*?fiyat=
Allow: /4. Stratejik İndeksleme
Bazı filtre kombinasyonlarını indeksleyin:
✅ İNDEKSLE:
/telefonlar
/telefonlar/apple (popüler marka)
/telefonlar/samsung (popüler marka)
❌ İNDEKSLEME:
/telefonlar?marka=apple&renk=siyah&hafiza=256gb
/telefonlar?sort=price-lowURL Parametresi Yönetimi:
Google Search Console → Settings → URL Parameters
Parametre: marka
Etki: Değiştirir
Tarama: Temsilci URL'leri bırak
Parametre: sort
Etki: Değiştirmez
Tarama: Her URL'yi taraSite Mimarisi Kontrol Listesi
Yapı ve Hiyerarşi:
- Site hiyerarşisi mantıksal ve sığ (3-4 seviye max)
- Her kategori net ve birbirinden ayrı
- URL yapısı hiyerarşiyi yansıtıyor
- Önemli sayfalar 3 tıklamadan erişilebilir
Internal Linking:
- Her sayfaya en az bir internal link var
- Orphan sayfalar tespit edildi ve düzeltildi
- Contextual linkler kullanılıyor
- Anchor text’ler tanımlayıcı
- İlgili içerikler birbirine bağlı
- Hub and spoke veya pillar-cluster model uygulandı
Navigation:
- Temiz, semantik navigation menüsü
- Breadcrumb tüm sayfalarda mevcut
- Footer’da önemli sayfalara linkler
- Mobile navigation optimize edilmiş
E-Ticaret Özel:
- Faceted navigation duplicate problemi çözüldü
- Filtre sayfaları canonical veya noindex
- URL parametreleri GSC’de tanımlandı
- Popüler filtreler ayrı sayfa olarak indekslendi
Monitoring:
- Aylık site audit yapılıyor
- Orphan sayfalar düzenli kontrol ediliyor
- Internal link dağılımı analiz ediliyor
- Tıklama derinliği izleniyor
Önemli Hatırlatmalar:
- Site mimarisi bir kez kurulup unutulan bir şey değildir
- Site büyüdükçe revize edilmelidir
- İyi bir yapı hem kullanıcılar hem botlar için faydalıdır
- Internal linking, SEO’nun en az kullanılan ama en etkili taktiklerinden biridir
- Orphan sayfalar potansiyel trafiğin israfıdır
4. XML Sitemap ve Index Yönetimi
Site mimarisi, Google’a sitenizin mantığını anlatır.
XML Sitemap ise Google’a “hangi sayfalarım gerçekten önemli ve indekslenmeli?” sorusunun cevabını verir.
Bu iki yapı birlikte çalışmadığında şu sorunlar ortaya çıkar:
- Önemsiz sayfalar indekslenir
- Önemli sayfalar geç veya hiç indekslenmez
- Crawl budget boşa harcanır
- Index bloat (şişkin indeks) oluşur
Bu yüzden XML Sitemap ve index yönetimi, teknik SEO’nun kontrol merkezi olarak düşünülmelidir.
XML Sitemap Nedir?
XML Sitemap, arama motorlarına sitenizdeki indekslenmesini istediğiniz URL’leri bildiren bir dosyadır.
Basit ama kritik bir kural:
XML Sitemap = “İndekslenmesini İSTEDİĞİM sayfalar”
Sitemap:
- Crawling’i kolaylaştırır
- Yeni sayfaların daha hızlı keşfedilmesini sağlar
- Google’a öncelik sinyali verir Ama tek başına indeks garantisi değildir.
XML Sitemap SEO’ya Nasıl Katkı Sağlar?
Crawling Verimliliği
Özellikle:
- Büyük sitelerde
- Derin mimarilerde
- Yeni veya az link alan sayfalarda
Googlebot sitemap sayesinde:
- Hangi URL’lerin önemli olduğunu bilir
- Boş yere filtre, parametre, arşiv sayfalarında dolaşmaz
Indexing Kontrolü
Sitemap, Google’a şu mesajı verir:
- “Bu URL canonical”
- “Bu URL canlı ve güncel”
- “Bu URL indekslenmeye aday”
Eğer sitemap’te olup indekslenmeyen sayfalar varsa:
Bu, içerik, kalite veya teknik problem sinyalidir.
Index Bloat’ın Önlenmesi
Index bloat, Google’ın: gereksiz, düşük kaliteli, SEO değeri olmayan sayfaları indekslemesidir.
Sonuçları:
Crawl budget israfı
Otorite dağılması
Önemli sayfaların geç taranması
Genel ranking performansının düşmesi
Yanlış yapılandırılmış sitelerde Google:
- Arama sonuç sayfalarını
- Filtre URL’lerini
- Parametreli sayfaları
- Zayıf içerikleri indeksleyebilir.
Doğru sitemap stratejisi:
- Gereksiz URL’leri dışarıda bırakır
- Google’ın indeksini “temiz” tutar
XML Sitemap Best Practices (Altın Kurallar)
✅ Sitemap’e GİRMESİ GEREKEN Sayfalar
- 200 status code dönen
- Canonical olan
- Noindex olmayan
- Gerçek trafik ve SEO değeri olan sayfalar
- Kategori, ürün, içerik, hizmet sayfaları
❌ Sitemap’e GİRMEMESİ GEREKEN Sayfalar
- Noindex olan URL’ler
- Redirect (301/302) URL’ler
- 404 / 410 sayfalar
- Filtreli ve parametreli URL’ler
- Arama sonuç sayfaları
- Teşekkür / login / sepet sayfaları
Altın kural: Sitemap’teki her URL = “Google’da görmek istediğim URL”
5. JavaScript SEO ve Render Edilebilirlik
Modern web sitelerinin büyük bölümü JavaScript kullanır. Google JavaScript’i işleyebilir, ancak bu her zaman sorunsuz olduğu anlamına gelmez.
Google’ın sayfa işleme süreci iki aşamalıdır:
- HTML Crawling (ilk tarama)
- Rendering (JS çalıştırıldıktan sonra)
Eğer kritik içerik ve linkler sadece JavaScript ile üretiliyorsa, Google bu içeriği:
- Geç indeksleyebilir
- Yanlış anlayabilir
- Hiç görmeyebilir
JavaScript SEO Ne Zaman Risklidir?
Aşağıdaki durumlar SEO riski oluşturur:
- İçerik, ürün, kategori veya internal linkler JS ile sonradan yükleniyorsa
- Infinite scroll ile içerik üretilip URL değişmiyorsa
- Lazy-load edilen içerik viewport dışındaysa
- Menü ve navigasyon JS ile oluşturuluyorsa
- Canonical, meta tag veya schema JS ile inject ediliyorsa
Kritik kural: Google’ın görmesi gereken her şey, mümkünse ilk HTML yanıtında bulunmalıdır.
Güvenli JavaScript SEO Yaklaşımı
- SSR (Server-Side Rendering) veya Static Rendering tercih edin
- Internal linkleri <a href=””> ile üretin
- Infinite scroll varsa, pagination + ayrı URL’ler kullanın
- Lazy-load sadece görseller için kullanın
- Meta tag, canonical ve schema HTML’de yer alsın
Hızlı Kontrol
- view-source: → içerik ve linkler var mı?
- GSC → URL Inspection → “View Crawled Page”
- Mobile-Friendly Test → Rendered HTML
Log Analizi ve Crawl Budget
Log analizi, Googlebot’un sitenizde gerçekte ne yaptığını görmenizi sağlar. GSC verileri özet sunar, loglar gerçeği gösterir.
Log Analizi Ne Zaman Gerekli?
Aşağıdaki durumlarda anlamlıdır:
- 50.000+ URL’li siteler
- E-ticaret ve marketplace yapıları
- Indexing gecikmeleri
- Crawl budget problemleri
- Ani trafik veya index kayıpları
Küçük sitelerde genellikle gerekli değildir.
Log Analizi ile Ne Öğrenilir?
- Önemli sayfalar yeterince crawl ediliyor mu?
- Googlebot en çok hangi URL’leri tarıyor?
- Crawl budget hangi sayfalara gidiyor?
- Parametreli / filtreli URL’ler boşa mı taranıyor?
- 404 / 5xx hatalarına bot geliyor mu?
Crawl Budget Optimizasyonu
Eğer loglarda şunları görüyorsanız:
- Filtre URL’leri yoğun crawl alıyorsa
- Eski veya noindex sayfalar taranıyorsa
- Önemli sayfalar nadir taranıyorsa
Aksiyonlar:
- Robots.txt ile gereksiz URL pattern’lerini yönlendirin
- Canonical + noindex stratejisini güçlendirin
- Sitemap’i sadeleştirin
- Redirect chain ve 404’leri temizleyin
- Server response time’ı düşürün
Hızlı Kontrol Listesi
JavaScript SEO
- İçerik HTML’de var
- Internal linkler <a href> ile
- Meta / canonical / schema JS’e bağlı değil
Log & Crawl Budget
- Önemli sayfalar düzenli crawl alıyor
- Filtre/parametre URL’leri crawl israfı yaratmıyor
- 404 ve 5xx bot trafiği yok
Özet
- JavaScript SEO: Yanlış yapılırsa görünmezlik yaratır
- Log analizi: Sorun büyükse oyunu değiştirir
- Küçük sitelerde detaylı uygulama şart değil
- Büyük ve karmaşık sitelerde ciddi avantaj sağlar



