Teknik SEO Kontrol Listesi: 8 Gerçek Sorun | Kodakod İçeriğe geç

Teknik SEO Kontrol Listesi: Kendi Sitemizi Denetlerken Bulduğumuz 8 Sorun

Başkalarının sitesini denetleyen bir ekip olarak kendi sitemizi de aynı titizlikle taradık. Bulduğumuz 8 sorunu, neden önemli olduklarını ve sizin sitenizde nasıl kontrol edebileceğinizi anlattık.

Kısaca: kodakod.com'u teknik SEO denetiminden geçirdiğimizde sekiz sorun bulduk: sitemap'te yayınlanmamış yazılar, İngilizce sayfalarda Türkçe başlıklar, tekrarlanan marka adı, öksüz kategori sayfaları, şemayla uyuşmayan breadcrumb, yalnızca JavaScript ile gelen rakamlar, yanlış korunan test ortamları ve yanlış dile yönlendiren 404 sayfası. Hiçbiri içerik sorunu değildi; hepsi sitenin nasıl kodlandığıyla ilgiliydi. Aşağıda her bulguyu, Google'ın resmî belgelerinin ne dediğini ve kendi sitenizde nasıl kontrol edeceğinizi anlatıyoruz.

Bu yazı bir itirafla başlıyor: kodakod.com'u kendi ellerimizle yazdık ve teknik SEO denetimine soktuğumuzda, başkalarının sitesinde aradığımız hataların bir kısmını kendi sitemizde bulduk.

Biraz bağlam: site iki dilli. Türkçe sayfalar önek almadan, İngilizce sayfalar /en/ altında yayınlanıyor. Blog, hizmet, portföy ve yasal sayfalardan oluşuyor ve hepsi bir yönetim panelinden besleniyor. Denetimi; taranma, indekslenme, meta etiketleri, yapılandırılmış veri, çok dillilik ve iç linkleme başlıklarında, kırktan fazla adımda yaptık. Aşağıdaki sekiz bulgu, sizin sitenizde de karşınıza çıkma ihtimali en yüksek olanlar.

1. Henüz yayınlanmamış yazılar sitemap'teydi

Blog yazılarına ileri bir yayın tarihi verebiliyoruz. Sorun şuydu: tarihi gelmemiş yazılar listede, sitemap'te ve RSS akışında görünüyor, adresleri de açılıyordu. Google'a "bu sayfa hazır" diyorduk, oysa hazır değildi.

Düzeltme, yayın tarihi gelmemiş içeriği her yüzeyden çıkarmak ve doğrudan adrese gelen isteğe gerçek bir 404 döndürmek oldu.

Google'ın sitemap rehberi kuralı net koyuyor: sitemap'e yalnızca arama sonuçlarında görmek istediğiniz, kanonik adresleri tam (mutlak) URL olarak yazın. Aynı rehber, sitemap'in bir garanti değil yalnızca bir ipucu olduğunu ve <lastmod> değerinin ancak tutarlı biçimde doğruysa dikkate alındığını da hatırlatıyor. Yani yanlış adresler, sitemap'inize duyulan güveni de aşındırır.

Sizin sitenizde: Zamanlanmış bir yazınız varsa sitemap.xml dosyanızı açın ve o adresi arayın. Oradaysa sorun sizde de var.

2. İngilizce sayfalarda Türkçe başlıklar

En çok zaman alan bulgu buydu. Anasayfa ve yasal sayfalar gibi bazı İngilizce sayfaların <title> ve meta açıklaması Türkçe çıkıyordu. Sebep tipikti: bu sayfaların başlığı şablona doğrudan Türkçe yazılmıştı ve İngilizce sürümde çevrilmeden basılıyordu. Açıklaması girilmemiş İngilizce sayfalar da Türkçe varsayılan açıklamaya düşüyordu. Sayfa İngilizceydi ama Google'ın arama sonucunda göstereceği metin Türkçeydi.

Başlık ve açıklamaların dile göre üretilmesini tek bir merkeze topladık; artık bir sayfanın çeviriyi atlaması mümkün değil. Bir de İngilizce sayfalarda Türkçe karakter ve kelime arayan küçük bir tarama betiği yazdık, şüphelendiğimizde onu çalıştırıyoruz.

Çok dilli sitelerde bunun bir de hreflang tarafı var. Google'ın yerelleştirilmiş sürümler belgesine göre her dil sürümü hem kendisini hem de diğer tüm sürümleri listelemeli; iki sayfa birbirini karşılıklı göstermiyorsa etiketler yok sayılıyor. Aynı belge, Google'ın sayfanın dilini hreflang'den ya da HTML lang özniteliğinden değil, kendi algoritmalarıyla belirlediğini söylüyor. Yani etiketleriniz kusursuz olsa bile, İngilizce sayfada Türkçe başlık duruyorsa sorun çözülmüş sayılmaz.

Sizin sitenizde: Google'da site:siteniz.com/en diye aratın ve sonuçların başlıklarına bakın. Yanlış dilde tek bir başlık bile, eksik bir çeviri zinciri olduğunu gösterir.

3. Başlıkta iki kez marka adı

Hizmet ve blog sayfalarında başlıklar "Sayfa adı | Kodakod | Kodakod" şeklinde çıkıyordu. Marka eki hem sayfa şablonunda hem de içerikte ekleniyordu. Küçük görünüyor, ama arama sonucunda görünen alan sınırlı ve tekrarlanan marka adı o alanın bir kısmını boşa harcıyordu.

Burada sık duyulan "başlık 60 karakteri geçmemeli" kuralına da bir not düşelim: Google'ın başlık bağlantıları belgesi <title> için bir uzunluk sınırı koymuyor; başlık, arama sonuçlarında gerektiğinde genellikle cihaz genişliğine sığacak şekilde kısaltılıyor. Aynı belge, başlıklarda tekrarlanan kalıp metinden kaçınmayı ve marka adını başlığın başında ya da sonunda bir kez kullanmayı öneriyor. Pratik sonuç şu: önemli kelimeleri başa alın, marka adını bir kez sona koyun.

Sizin sitenizde: Bir tarama aracıyla bütün sayfaların başlıklarını listeleyin ve marka adını sayın.

4. Kimsenin link vermediği kategori sayfaları

Kategori ve etiket sayfalarımız vardı, sitemap'te de yer alıyorlardı. Ama sitedeki kategori kartları bu sayfalara değil, aynı sayfadaki bir bölüme (#kategori) link veriyordu. Sonuç: site içinden hiçbir yoldan ulaşılamayan, yani "öksüz" sayfalar.

Google'ın link belgesi, linkleri hem yeni sayfaları bulmak hem de sayfaların ilgililiğini değerlendirmek için bir sinyal olarak kullandığını ve önemsediğiniz her sayfanın sitenizdeki en az bir başka sayfadan link alması gerektiğini söylüyor. Ayrıca Google bir linki ancak href özniteliği olan bir <a> öğesiyse güvenilir biçimde takip edebiliyor. Bir sayfayı yalnızca sitemap'te gösterip site içinde hiç link vermemek, bu sinyalin tamamen eksik kalması demek.

Kartları gerçek adreslere bağladık.

5. Görünen breadcrumb ile şemadaki breadcrumb farklıydı

Sayfanın üstündeki "Anasayfa › Blog › Yazı" satırı ile Google için yazılan BreadcrumbList yapılandırılmış verisi iki ayrı yerde üretiliyordu. İkisi başta aynıydı, ama biri değiştiğinde öteki kendiliğinden değişmiyordu.

Google'ın yapılandırılmış veri yönergeleri açık: işaretleme sayfa içeriğinin doğru bir temsili olmalı ve ziyaretçinin göremediği içerik işaretlenmemeli. Bu yönergelere aykırı işaretleme, söz dizimi doğru olsa bile zengin sonuç olarak gösterilmeyebilir; ağır durumlarda manuel işlemle zengin sonuç uygunluğu kaybedilebilir.

İkisini tek bir parçadan üretir hale getirdik. On dört sayfa tipinde artık aynı kaynaktan geliyor.

6. İlk HTML'de "0 proje" yazıyordu

Hakkımızda sayfasındaki sayaçlar (tamamlanan proje, müşteri memnuniyeti puanı) sayfa açıldıktan sonra JavaScript ile sıfırdan yukarı sayıyordu. Ziyaretçi için güzel bir animasyondu. Ama sayfanın ilk HTML'inde bu rakamların hepsi sıfırdı. JavaScript çalıştırmayan bir tarayıcı, ki bugün yapay zeka araçlarının tarayıcılarının bir kısmı böyle çalışıyor, sayfamızda "0+ tamamlanan proje" ve "0/5 müşteri memnuniyeti" okuyordu. Ekran okuyucu kullanan ziyaretçiler de aynı sıfırları duyuyordu.

Gerçek değerleri sunucuda HTML'e yazdık; animasyon yalnızca bir süsleme olarak kaldı.

Googlebot JavaScript çalıştırabiliyor, ama Google'ın JavaScript SEO temelleri belgesi de her botun JavaScript çalıştıramadığını ve sunucu tarafında ya da önceden render etmenin hem kullanıcılar hem tarayıcılar için siteyi hızlandırdığı için hâlâ çok iyi bir fikir olduğunu yazıyor. Kural basit: bir bilgi önemliyse ilk HTML'de olmalı.

Sizin sitenizde: Sayfanızda sağ tıklayıp "Sayfa kaynağını görüntüle" deyin. Önemli rakamlarınız ve metinleriniz orada yoksa, yalnızca JavaScript ile geliyorlar demektir.

7. Test ortamları yalnızca robots.txt ile korunuyordu

Canlı olmayan ortamlarımızda robots.txt bütün siteyi tarayıcılara kapatıyordu. Çoğu ekip bunu yeterli sanır. Değil: robots.txt taramayı engeller, indekslemeyi değil. Google'ın robots.txt belgesi de bunu açıkça söylüyor: robots.txt bir sayfayı Google'ın dışında tutma yöntemi değildir; başka sayfalar o adrese link veriyorsa Google adresi, sayfayı hiç ziyaret etmeden de dizine ekleyebilir.

İlk tepkimiz, canlı olmayan ortamlarda her sayfaya noindex etiketi eklemek oldu. Ama bu kurgunun da bir tuzağı var ve onu da açıkça yazmamız gerekiyor: noindex'i robots.txt engelinin yanına eklemek işe yaramaz. Google'ın noindex belgesine göre kuralın çalışması için sayfanın robots.txt ile engellenmemiş olması gerekir; engelliyse tarayıcı sayfayı hiç açmaz ve noindex'i hiçbir zaman görmez. Google ayrıca robots.txt içine yazılan bir noindex kuralını desteklemiyor.

Test ortamı için doğru sıralama şöyle:

  • En sağlamı erişim koruması: Ortamı parola, IP kısıtlaması ya da kimlik doğrulama arkasına alın. Google'ın robots.txt belgesi de bir sayfayı dışarıda tutmak için noindex'i ya da parola korumasını gösteriyor. Tarayıcı içeriğe ulaşamazsa indekslenecek bir şey de kalmaz.
  • Erişim korumasını kuramıyorsanız noindex: Her yanıtta noindex meta etiketi ya da X-Robots-Tag başlığı gönderin ve bu adresleri robots.txt ile engellemeyin; Google'ın etiketi görebilmesi gerekiyor.
  • robots.txt tek başına koruma değildir: Tarama yükünü yönetmek için kullanılır, gizlilik için değil.

8. İngilizce 404 sayfası Türkçe anasayfaya çıkıyordu

Hata sayfamız doğru şekilde gerçek bir 404 kodu dönüyordu; o kısım sağlamdı. Ama sayfada tek bir "Anasayfa" linki vardı ve o da her zaman Türkçe anasayfaya gidiyordu. İngilizce bir adreste kırık linke düşen ziyaretçi ya Türkçe bir sayfaya atılıyor ya da siteyi kapatıyordu. Hizmetlere, bloga veya iletişime giden bir yol yoktu.

404 sayfasına, ziyaretçinin dilinde anasayfa, hizmetler, blog ve iletişim linkleri ekledik. Hata sayfaları genellikle unutulur, oysa kırık bir linkten gelen ziyaretçiyi sitede tutmanın son şansıdır.

Bir uyarı: "bulunamadı" mesajı gösterip 200 kodu döndüren sayfalar Google'da "soft 404" olarak raporlanır. Özellikle JavaScript ile yönlendirilen tek sayfalı uygulamalarda Google'ın aynı belgesi, hata durumunda sunucunun 404 döndürdüğü bir adrese yönlendirmeyi ya da sayfaya noindex eklemeyi öneriyor.

Bulgular ve Google'ın resmî yönergeleri

BulguGoogle'ın belgesi ne diyor?Bizim düzeltmemiz
Yayınlanmamış yazılar sitemap'teSitemap'e yalnızca aramada görünmesini istediğiniz kanonik adresler girer.Yayın tarihi gelmemiş içerik her yüzeyden çıktı, adres 404 dönüyor.
İngilizce sayfada Türkçe başlıkGoogle sayfanın dilini içerikten belirler; hreflang karşılıklı olmalı.Başlık ve açıklamalar tek merkezden, dile göre üretiliyor.
Çift marka adıBaşlıkta tekrarlanan kalıp metinden kaçının; marka adı bir kez yeter.Marka eki tek yerden ekleniyor.
Öksüz kategori sayfalarıÖnemsediğiniz her sayfa en az bir iç link almalı.Kartlar gerçek adreslere bağlandı.
Breadcrumb uyuşmazlığıYapılandırılmış veri görünen içeriğin doğru temsili olmalı.İkisi tek parçadan üretiliyor.
JavaScript ile gelen rakamlarHer bot JavaScript çalıştıramaz; sunucu tarafı render önerilir.Değerler sunucuda HTML'e yazılıyor.
Test ortamırobots.txt indekslemeyi engellemez; noindex'in görülmesi için sayfa taranabilir olmalı.Erişim koruması ya da engellenmemiş noindex.
404 sayfasıHata sayfası gerçek 404 dönmeli; soft 404'ten kaçının.404 korundu, dile göre linkler eklendi.

Kısa kontrol listesi

Bu sekiz bulgudan çıkan, kendi sitenizde yarım saatte bakabileceğiniz kontroller:

  • Sitemap'te yalnızca yayında olan ve 200 dönen adresler var mı?
  • Her dilde başlık ve açıklamalar o dilde mi?
  • Her dil sürümü hreflang ile kendisini ve diğer sürümleri gösteriyor mu?
  • Başlıklarda marka adı bir kez mi geçiyor?
  • Sitemap'teki her sayfaya site içinden en az bir link gidiyor mu?
  • Görünen breadcrumb ile yapılandırılmış veri aynı mı?
  • Önemli metin ve rakamlar sayfa kaynağında görünüyor mu?
  • Test ortamları parola ile korunuyor mu; korunmuyorsa noindex var ve bu sayfalar robots.txt ile engellenmemiş mi?
  • 404 sayfası gerçek 404 kodu dönüyor, ziyaretçinin dilinde ve sitenin önemli bölümlerine link veriyor mu?

Bu listede hız yok, çünkü o başlı başına bir konu. Sayfa hızını ve Core Web Vitals metriklerini ayrı bir yazıda anlattık.

Sık yapılan hatalar

  • Denetimi tek seferlik görmek: Bulguların çoğu yeni bir şablon, yeni bir dil ya da yeni bir özellik eklendiğinde geri gelir. Kontrolleri bir yayın sürecine bağlamak, yılda bir denetimden daha etkilidir.
  • Yalnızca ana dildeki sayfaları kontrol etmek: Bizim en uzun süren bulgumuz İngilizce sayfalardaydı. Her dili ayrı bir site gibi tarayın.
  • Araç uyarısını sorunun kendisi sanmak: Tarama araçları belirtiyi gösterir; çoğu zaman asıl düzeltme şablonda ya da kodda yapılır.

Bu denetimden çıkardığımız asıl ders şu oldu: bulguların neredeyse hiçbiri içerikle ilgili değildi. Hepsi sitenin nasıl kurulduğuyla, yani kodla ilgiliydi. Aynı sorunlar, yapay zeka asistanlarının sitenizi nasıl okuduğunu da etkiliyor; bu yüzden GEO çalışması da aynı temelden başlıyor. Bir SEO teklifinde bu tür teknik işlerin nasıl yer alması gerektiğini de SEO hizmeti fiyatları yazımızda anlattık.

Sitenizde benzer bir denetim yaptırmak isterseniz, SEO ve GEO hizmetimizde denetimi ve düzeltmeleri aynı ekip olarak yapıyoruz.

Sık sorulan sorular

Teknik SEO denetimi, bir sitenin arama motorlarınca doğru taranmasını, indekslenmesini ve anlaşılmasını engelleyen altyapı sorunlarını bulma çalışmasıdır. Taranma, indekslenme, başlık ve meta açıklamalar, yapılandırılmış veri, çok dillilik ve iç linkleme gibi başlıkları inceler. Bulguların çoğu içerikle değil, sitenin nasıl kodlandığıyla ilgilidir; aynı sorunlar yapay zeka asistanlarının sitenizi nasıl okuduğunu da etkiler.

Sitemap'te yayında olmayan bir adres bulunması, arama motoruna hazır olmayan bir sayfayı hazırmış gibi bildirmek demektir. Sitemap'te yalnızca yayında olan ve 200 durum kodu dönen adresler yer almalıdır. Yayın tarihi gelmemiş içerik listelerden, sitemap'ten ve RSS akışından çıkarılmalı, doğrudan adresine gelen isteğe de gerçek bir 404 dönmelidir.

Hayır, robots.txt taramayı engeller ama indekslemeyi engellemez; başka bir yerden link alan bir test adresi, içeriği hiç okunmadan da dizine eklenebilir. Bu yüzden canlı olmayan ortamlarda sayfalara noindex etiketi eklenmelidir. Google'ın bu etiketi görebilmesi için sayfanın robots.txt ile engellenmemiş olması gerekir; en sağlam yöntem ise test ortamını parola veya erişim kısıtlamasıyla korumaktır.

JavaScript çalıştırmayan tarayıcılar sayfanın yalnızca ilk HTML'ini okur; önemli bilgi orada yoksa onu hiç görmezler. Bugün yapay zeka araçlarının tarayıcılarının bir kısmı bu şekilde çalışır ve ekran okuyucu kullanan ziyaretçiler de aynı sorunu yaşayabilir. Kontrol için sayfada sağ tıklayıp sayfa kaynağını görüntüleyin; önemli değerler sunucuda HTML'e yazılmalı, animasyon yalnızca süsleme olarak kalmalıdır.

Birkaç basit kontrolle yaklaşık yarım saatte temel bir tarama yapabilirsiniz. Sitemap'te yalnızca yayındaki adresler olup olmadığına, her dilde başlık ve açıklamaların o dilde yazılıp yazılmadığına ve marka adının başlıkta bir kez geçip geçmediğine bakın. Sitemap'teki her sayfaya site içinden link gidip gitmediğini, görünen breadcrumb ile yapılandırılmış verinin aynı olup olmadığını, test ortamlarında noindex bulunup bulunmadığını ve 404 sayfasının ziyaretçinin dilinde önemli bölümlere link verip vermediğini de kontrol edin.

Kodakod Ekibi Web Ekibi Tüm yazılar
Topluluk

Siz ne düşünüyorsunuz?

Henüz yorum yok. İlk yorumu sen yaz; düşüncelerini paylaş.

Yorum yaz

Hadi başlayalım

Bir fikriniz mi var? Konuşalım.

Ücretsiz bir keşif görüşmesiyle başlayalım; size özel net bir yol haritası ve teklif çıkaralım.

Hemen konuşalım (WhatsApp)