Php İle Büyük Siteler İçin Sitemap Yapma !
Merhaba arkadaşlar uzun bir aradan sonra tekrar sizlere güzel bir kod paylaşımı yapmak istiyorum . Hem bu şekilde sizlere bu kodları veya bilgilendirmeleri paylaştıkça arşivimide yavaş yavaşta olsa oluşturmuş oluyorum. Geçenlerde Pilli Network'un yeni sitesi olan kodaman.org ' a girdim . Gerçekten güzel bir site olmuş diyorum ve buradan Pilli Network ve Nokta A.Ş ' ye teşekkürlerimi iletiyorum . Neyse sitede gezmeye başladığımda daha sadece 3 yazı vardı ve 3. yazı ise bu size vereceğim sitemap.php koduydu. Ve gerçekten kodu incelediğimde bir çok sorunu yokedebilecek bir kod olduğunu düşündüm ve hemen kod sayfasını sık kullanılanlarıma ekledim . Ve o zamandan bu zaman'a kadar üniversitedeki vize sınavlarımla uğraştığım için yazamamıştım .
Kodumuz şöyle :
-
<?
-
// Önce mysql bağlantı bilgilerini içeren php dosyamızı include ediyoruz
-
$mysqlhost="localhost";
-
$mysqluser="makaleler";
-
$mysqlpass="12345";
-
$mysqldatabase="makaleler";
-
if(! $baglanti=@mysql_connect($mysqlhost, $mysqluser, $mysqlpass)) die("veritabani baglantisi yok.");
-
-
// İkinci olarak sayfa output'unun hangi formatta olduğunu belirten header komutunu gönderiyoruz. Sayfamız xml formatında olacaktır.
-
-
// Get metoduyla aldığımız sayfa verisini $sayfa isimli değişkene atıyoruz.
-
-
//Tarihi belirtiyoruz. Burada format önemli. Format dışına çıkılmamalı. Eğer veritabanınızda her makalenin giriş tarihi varsa dinamik olarak onu da ekleyebilirsiniz. Burada sabit bir gün kullandım.
-
$date="2008-10-21";
-
-
// Eğer sayfa değişkeni "index" değeri aldıysa output olarak sitemap-index verilecek.
-
if($sayfa=="index"):
-
-
// İlk olarak bütün makale sayısını alıyoruz.
-
// İkinci olarak kaç adet index'te kaç adet sitemap listeleneceğini bulmak için, toplam rakamı sitemap başı url sayısına bölüyoruz. Ben genelde veritabanını yormamak ve hızlı yüklenme için 6000 kullanırım.
-
-
//Google sitemap-index header'larını giriyoruz. Encoding'i dileğinize göre değiştirebilirsiniz.
-
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-
<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
-
-
// Ana etiketleri girdikten sonra sitemap'ları döngü ile listeliyoruz.
-
for($i=0; $i<$index_sayi; $i++){
-
echo "<sitemap>
-
<loc>http://www.butunmakaleler.com/sitemap.php?sayfa=".($i+1)."</loc>
-
<lastmod>$date</lastmod>
-
</sitemap>\n";
-
}
-
-
// Son olarak sitemap-index sonlandırma etiketini girip index'i bitiriyoruz.
-
echo "</sitemapindex>";
-
-
// 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 "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
-
<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
-
xsi:schemaLocation=\"http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd\">\n";
-
-
// Alınan 6000'lik parça döngü ile yazdırılıyor.
-
-
echo " <url>
-
<loc>http://www.butunmakaleler.com/makale.php?id=".$sonuc[id]."</loc>
-
<lastmod>$date</lastmod>
-
<changefreq>daily</changefreq>
-
<priority>0.5</priority>
-
</url>\n";
-
-
endwhile;
-
-
// Son olarak sitemap'ı sonlandırma etiketini yazdırıp dosyayı kapatıyoruz.
-
echo '</urlset>';
-
-
endif;
-
?>
Kodaman.Org ' tan Alıntı :
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.
44 views
Hocam bilgi için teşekürler .
tşkler,deneyeceğim.
rss yapmak istersek nasıl olcak hocam normal php portala