1. Neden Eklentilere (Plugin) Veda Etmeliyiz?
Web dünyasında bir işi "kolayca" yapmanın bedeli her zaman performans kaybıdır. Piyasada Sitemap veya RSS oluşturmak için onlarca ünlü SEO eklentisi bulunur. Bir tuşa basarsınız ve her şeyi onlar halleder. Ancak o tuşun arkasında, sizin sitenizin hiçbir zaman kullanmayacağı yüzlerce satır gereksiz kod ve sorgu çalışır.
Eklentiler sitenizin hızını düşürür (sayfalarınız geç açılır), sunucunuzu (CPU/RAM) boş yere yorar ve en kötüsü, eklentide çıkan bir güvenlik açığı nedeniyle tüm sitenizin hacklenmesine neden olabilir. Oysa Sitemap ve RSS oluşturmak, aslında veritabanınızdaki yazıların linklerini alt alta listelemekten başka bir şey değildir. Bir liste yapmak için koca bir eklenti paketi yüklemek, bir çivi çakmak için eve devasa bir inşaat makinesi getirmek gibidir.
2. Sitemap ve RSS Aslında Nedir? Korkutucu XML Dili
Hem Sitemap (Site Haritası) hem de RSS (Zengin Site Özeti), uzantısı .xml olan düz metin dosyalarıdır. XML dili gözünüzü korkutmasın; HTML'in çok yakın bir akrabasıdır. HTML nasıl bilgisayara "Burası kalın harf olacak, buraya resim gelecek" diyorsa, XML de bilgisayarlara ve robotlara "Bu yazının linki budur, bu yazının tarihi budur" der.
- Sitemap (Site Haritası): Tamamen Googlebot ve diğer arama motoru robotları için yazılır. Görsel bir yanı yoktur. Robota sadece şunu söyler: "Benim sitemde 100 tane yazı var, linkleri bunlardır, en son şu tarihte güncellendiler, lütfen git ve bunları indeksle."
- RSS Beslemesi: Robotlar için değil, başka yazılımlar ve insanlar için yazılır. Ziyaretçileriniz sitenize girmeden, telefonlarındaki bir RSS okuyucu programla (Feedly vb.) sizin yeni yazı yazıp yazmadığınızı, yazının başlığını ve özetini bu dosyadan çekerler.
Bunu arka planda, kodumuzun en üstüne header("Content-Type: text/xml; charset=utf-8"); komutunu ekleyerek yaparız. Bu tek satırlık komut olmadan, yazdığınız XML kodları hiçbir işe yaramaz.
3. Saf Kod ile Sitemap (Site Haritası) Nasıl Oluşturulur?
Mantık çok basittir: Veritabanına (Database) bağlan, yayınlanmış (yayında olan) yazıların listesini çek ve bunları XML etiketlerinin arasına yazdır. Tüm web sitelerinin altyapısı bu mantıkla çalışır. Örnek olarak internetin en yaygın dili olan PHP'yi kullanarak temel mantığı anlatalım. (Bu mantık Python, Node.js veya C# için de birebir aynıdır).
Öncelikle boş bir PHP dosyası (örneğin sitemap.php) açıyoruz. İçine yazacağımız XML yapısı Google'ın beklediği kesin standartlarda olmalıdır:
İşte bu kadar! Eklentilerin arka planda binlerce satır kodla yaptığı işi, siz sadece 15 satır saf ve tertemiz kodla yapmış oldunuz. Biri tarayıcıya siteniz.com/sitemap.php yazdığı an, bu kod anında veritabanınıza bakar, o günkü en güncel yazıları alır ve kusursuz bir harita çıkarır.
4. Saf Kod ile RSS Beslemesi (Feed) Nasıl Oluşturulur?
Sitemap'i başardıysanız, RSS yapmak onun sadece farklı kıyafet giymiş halidir. Mantık tamamen aynıdır: Veritabanına bağlan ve döngü (loop) ile yazıları listele. Sadece etiketlerin isimleri değişir. RSS dosyaları Googlebot'tan ziyade insanların okuduğu programlar için olduğu için, içine yazının başlığını (title) ve özetini (description) de eklememiz gerekir.
RSS için boş bir dosya (örneğin rss.php veya feed.php) açıyoruz. RSS formatı (RSS 2.0 standartları) şu şekildedir:
Bu yüzden RSS içine başlık veya özet yazdırırken yukarıdaki kodda gördüğünüz htmlspecialchars() fonksiyonunu kullanmak hayat kurtarır. Bu fonksiyon, tehlikeli karakterleri XML'in anlayacağı güvenli formata çevirir.
5. Hız Optimizasyonu: Anlık Üretim mi, Fiziksel Dosya mı?
Yukarıda anlattığımız kodlar Anlık Üretim (Dinamik) mantığıyla çalışır. Yani biri (veya Google) sitemap.php adresine her girdiğinde, kod veritabanına bağlanır ve o saniye dosyayı oluşturur. Eğer sitenizde 500-1000 arası yazı varsa bu yöntem kusursuzdur, sunucunuz bunu milisaniyeler içinde halleder.
Ancak sitenizde 50.000 yazı varsa, Googlebot her sitemap.php'ye girdiğinde sunucunuz o 50.000 yazıyı veritabanından tekrar tekrar çekmeye çalışır ve siteniz donar (kilitlenir). Eğer devasa bir siteniz varsa kodunuzu anlık üretim yerine Fiziksel Dosya Kaydetme (Cron Job) mantığına çevirmelisiniz.
Bu nasıl olur? Ekrana (echo ile) yazdırmak yerine, veriyi bir metin değişkenine toplarsınız. Sonra PHP'nin file_put_contents('sitemap.xml', $veriler) komutuyla bunu gerçekten ana dizinize statik (sabit) bir dosya olarak kaydedersiniz. Sunucunuzdaki "Zamanlanmış Görevler" (Cron Job) ayarından bu kodun günde sadece 1 kez (örneğin gece saat 03:00'te) çalışmasını emredersiniz. Böylece Googlebot geldiğinde veritabanınızı yormaz, hazır kaydedilmiş sabit XML dosyasını okuyup hızla çeker gider.
6. URL Yönlendirme (Temiz Linkler)
Googlebot ve kullanıcılar, siteniz.com/sitemap.php gibi sonu ".php" ile biten adresleri pek sevmez. Arama motorlarının standart olarak beklediği adres siteniz.com/sitemap.xml adresidir.
Siz saf kodunuzu "sitemap.php" içine yazmış olsanız bile, dışarıdan gelenlere bunu ".xml" gibi gösterebilirsiniz. Eğer sunucunuz Apache ise (ki dünyanın %80'i böyledir), sitenizin ana dizinindeki görünmez .htaccess dosyasına girip şu tek satırlık kodu eklemeniz yeterlidir:
RewriteRule ^sitemap\.xml$ sitemap.php [L]
Bu sihirli satır sayesinde Google sitemap.xml adresine girmeye çalışır, sunucunuz ona sizin yazdığınız sitemap.php kodunun sonucunu gösterir. Herkes mutlu olur.
Sonuç: Search Console'a Bildirim ve Kontrol
Kodunuzu yazdınız, sitenize yüklediniz ve tarayıcıdan siteniz.com/sitemap.xml diyerek kontrol ettiniz. Ekranda yazılımcıların o meşhur siyah/mavi renkli XML ağacını hatasız bir şekilde gördüyseniz, tebrikler! Hiçbir eklentiye para veya sistem kaynağı ödemeden kendi haritanızı oluşturdunuz.
Son ve en önemli adım, bu eserinizi Google'a teslim etmektir. Hemen Google Search Console hesabınıza girin. Sol menüden "Site Haritaları" (Sitemaps) sekmesine tıklayın ve oluşturduğunuz sitemap.xml adresini oraya yazıp "Gönder" butonuna basın. Birkaç saniye içinde Googlebot dosyanızı okuyacak ve ekranda yeşil renkli "Başarılı" yazısı çıkacaktır.
Aynı şekilde oluşturduğunuz rss.php (veya feed.xml) linkinizi de, web sitenizin en üstünde veya en altında bir "RSS Abone Ol" ikonuyla okuyucularınıza sunabilirsiniz. Kendi yazdığınız bu saf kodlar, siteniz arka planda her güncellendiğinde otomatik olarak kendi kendini yenileyecek; sitenizi yavaşlatmadan, sessiz ve kusursuz bir şekilde görevini sonsuza dek sürdürecektir.