Paylaş

Okuma Listem

# Saatlik Popüler Etiketler
Etiketler yükleniyor...
Kelimero Ağı

Saf Kod İle Otomatik Sitemap ve RSS Oluşturma (Eklentisiz)

Odaklan
Dinle
Kaydet
[ÖZET] Bir web sitesi yönetirken Google'a "Ben yeni bir yazı yazdım, gel bunu gör" demenin (Sitemap) ve okuyucularınıza "Yeni içeriklerim yayınlandı" diye haber vermenin (RSS) en bilinen yolu hazır eklentiler (plugin) kullanmaktır. Ancak WordPress veya diğer sistemlerde kurduğunuz her bir eklenti, sitenizin arkasına bağlanmış fazladan bir vagon gibidir. Eklentiler sitenizi yavaşlatır, güvenlik açığı oluşturur ve veritabanınızı çöplüğe çevirir. Oysa ki Sitemap ve RSS dediğimiz şeyler, gözünüzde büyüttüğünüz karmaşık yazılımlar değil; sadece basit bir "metin" (XML) dosyasıdır. Sitenizdeki yazıları veritabanından çekip bu metin dosyasının içine alt alta yazdırmak için hiçbir harici eklentiye, aylık ücret ödenen SEO araçlarına veya ağır eklentilere ihtiyacınız yoktur. Kendi yazdığınız 20-30 satırlık saf ve temiz bir kod parçasıyla, siteniz her güncellendiğinde otomatik olarak kendi Sitemap ve RSS beslemesini saniyeler içinde üretebilir. Bu rehberde, eklenti bağımlılığından kurtulup kendi sitenizin kontrolünü tamamen elinize alacağınız, saf kodla Sitemap ve RSS oluşturma mantığını hiçbir yazılım mühendisliği terimine boğmadan, en sade haliyle adım adım anlatıyoruz.
VERİTABANI SAF KOD XML (SITEMAP/RSS) BOT OKUR
Eklentisiz Akış: Veritabanınızdaki (sol) yazılar, araya hiçbir eklenti sokulmadan saf kodunuzla (orta) doğrudan XML dosyasına çevrilir. Bu dosya hem Google robotlarını (üst sağ) hem de RSS ile sitenizi takip eden okurları (alt sağ) anında besler.

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.
TEKNİK BİLGİ // TARAYICIYA KİMLİK BİLDİRMEK
Normal bir PHP veya kod dosyasını çalıştırdığınızda tarayıcı bunu düz bir web sayfası (HTML) zanneder. Yazacağımız saf kodun en tepesinde, tarayıcıya "Dikkat, bu normal bir sayfa değil, bu bir XML robot dosyasıdır!" dememiz gerekir.

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:

<?php // 1. Tarayıcıya bunun bir XML dosyası olduğunu söylüyoruz header("Content-Type: text/xml; charset=utf-8"); // 2. XML'in zorunlu başlangıç etiketlerini yazdırıyoruz echo '<?xml version="1.0" encoding="UTF-8"?>'; echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'; // 3. Veritabanına bağlanıp yazıları çekiyoruz (Örnek PDO bağlantısı) // $db = new PDO(... bağlantı kodlarınız ...); // $yazilar = $db->query("SELECT baslik_url, tarih FROM yazilar WHERE durum='yayinda'"); // 4. Çektiğimiz her yazı için bir <url> bloğu oluşturuyoruz foreach($yazilar as $yazi) { echo '<url>'; echo '<loc>https://www.siteniz.com/yazi/' . $yazi['baslik_url'] . '</loc>'; echo '<lastmod>' . date('Y-m-d', strtotime($yazi['tarih'])) . '</lastmod>'; echo '<changefreq>weekly</changefreq>'; echo '</url>'; } // 5. XML dosyasını kapatıyoruz echo '</urlset>'; ?>

İş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:

<?php header("Content-Type: text/xml; charset=utf-8"); echo '<?xml version="1.0" encoding="UTF-8"?>'; echo '<rss version="2.0">'; echo '<channel>'; echo '<title>Benim Harika Blogum</title>'; echo '<link>https://www.siteniz.com</link>'; echo '<description>En güncel yazılım ve teknoloji yazıları</description>'; // Veritabanından son 20 yazıyı çekiyoruz foreach($yazilar as $yazi) { echo '<item>'; echo '<title>' . htmlspecialchars($yazi['baslik']) . '</title>'; echo '<link>https://www.siteniz.com/yazi/' . $yazi['baslik_url'] . '</link>'; echo '<description>' . htmlspecialchars($yazi['ozet']) . '</description>'; // RSS tarihi RFC 822 formatında olmalıdır (D, d M Y H:i:s O) echo '<pubDate>' . date('r', strtotime($yazi['tarih'])) . '</pubDate>'; echo '</item>'; } echo '</channel>'; echo '</rss>'; ?>
ÖNEMLİ KURAL // ÖZEL KARAKTER HATALARI (HTMLSPECIALCHARS)
XML dosyaları çok hassastır. Eğer veritabanından çektiğiniz bir yazının başlığında & (ve) veya < (küçüktür) gibi özel karakterler varsa, XML dosyası anında bozulur ve çalışmayı durdurur.

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.

"Web geliştirme dünyasında gerçek özgürlük ve hız, aracıları ortadan kaldırdığınızda başlar. Başkasının yazdığı, içinde ne olduğunu bilmediğiniz karanlık bir eklenti kutusuna güvenmek yerine; sistemin kalbine (veritabanına) inip kendi verinizi kendi kurallarınızla çekmek, bir site sahibinin ulaşabileceği en yüksek optimizasyon seviyesidir."

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.

İçeriği Paylaş
T

T.T

Kelimero'nun kurucusu. Araştırmayı, etimolojiyi ve bilginin köklerine inmeyi seven bir dijital kültür elçisi.

Sonraki İçerik Yeni Yayınlara Git Önceki İçerik Eski Yayınlara Git
Sizin İçin Seçilenler