Sitemap ya da diğer bir deyişle site haritaları, sitemizin google ve diğer arama motorlarına daha hızlı endekslenmesini sağlayan önemli faktörlerden biri.Bir site haritası temel olarak sitemizin içindeki sayfaların bir listesini içeren bir tür xml dosyasıdır.Sitemizin haritasını çıkarmak için, eğer sitemiz küçük veya orta ölçekteyse hazır araçlar kullanabiliriz. Bu araçlar genelde crawling mantığı ile çalışırlar. Fakat örneğin sitemizde en az 200.000 sayfa varsa, bu durumda kullandığımız hazır araçlar site haritası yapımında sadece zaman kaybına sebep olacaktır.Bir sitemiz olsun ve ismi butunmakaleler.com olsun. Sitemizin 300.000 sayfa/makale’den oluşan bir site olduğunu ve php/mysql üzerinde çalıştığını varsayalım.
Site uri yapısı da şu şekilde olsun.http://www.butunmakaleler.com/makale.php?id=223Şimdi sitemiz için php ile kısa yoldan bir sitemap hazırlayacağız.Fakat öncelikle google sitemap’ın kısıtlamalarını bilmemiz gerekiyor. Bunları kısaca sayarsak,- Bir sitemap dosyasında maksimum 50.000 url olabilir.- Bir sitemap dosyası gzip ile maksimum 1 MB, gzip’siz maksimum 10 MB olabilir.Biraz akıllı bir webmaster bu durumda google sitemap için 45.000 url’den oluşan 7 tane sitemap hazırlamak gerektiğini düşünecektir. Fakat sitemap-index kullanarak tek tek 7 adet sitemap hazırlamaktan kurtulmamız mümkündür.Sitemap-index bir sitenin sitemap’larının listesini veren xml tabanlı bir dosyadır.
300.000 makale içeren sitemizde, veritabanı tablosunda her makalenin unique bir numarası mevcuttur.Sitemizin sitemap’ını sadece bir php kullanarak hazırlayacağız.Dosyamızın ismi sitemap.php olsun ve sitenin ana dizininde bulunsun. Dosyaya sayfa isminde bir get değişkeni atayalım. Script Sayfa değişkeni index değerini aldığında sitemap-index‘i, numara aldığında ise sitemap‘ı göstersin.
sitemap.php dosyasının içeriği şöyle olacaktır. n”;// Ana etiketleri girdikten sonra sitemap’ları döngü ile listeliyoruz.for($i=0; $i<$index_sayi; $i++){echo "http://www.butunmakaleler.com/sitemap.php?sayfa=”.($i+1).”$date
n”;
}// Son olarak sitemap-index sonlandırma etiketini girip index’i bitiriyoruz.echo “
“;
// Eğer GET ile aldığımız sayfa değişkeni numerik ise bu kodlar çalışacak.else:// Sayfa numarasına göre 6000’lik veri alınıyor.$sorgu=mysql_query(“SELECT `id` FROM `makaleler` ORDER BY `id` ASC LIMIT “.(($sayfa-1)*6000).”,6000″);// Sitemap ana xml etiketleri giriliyor.echo “n”;// Alınan 6000’lik parça döngü ile yazdırılıyor.while($sonuc=mysql_fetch_assoc($sorgu)):echo ” http://www.butunmakaleler.com/makale.php?id=”.$sonuc[id].”$date
daily 0.5
n”;
endwhile;// Son olarak sitemap’ı sonlandırma etiketini yazdırıp dosyayı kapatıyoruz.echo ‘
‘;
endif;?>
sitemap.php dosyasını sitemizin ana dizinine yükledikten sonra. google webmaster tools‘u açıp site haritası ekle linkine tıklıyoruz. Çıkan adrese,
http://www.butunmakaleler.com/sitemap.php?sayfa=indexyazdıktan sonra ekle diyoruz.Sitemap’ımızı hazırladık. Artık google 300.000 sayfanın tamamını bu adresteki veriyi indirerek listeleyebilecek. Ayrıca makale ekledikçe tekrar tekrar site haritası oluşturmak zorunda kalmayacağız, haritamız hep güncel olacak. Ayrıca 7 adet site haritası yazdırıp bunları tek tek yükleme zahmetinden de kurtulmuş olduk.