Php ve Xml ile Dinamik Site Haritası Oluşturma
Php

Php ve Xml ile Dinamik Site Haritası Oluşturma

Merhaba arkadaÅŸlar. Bu makalemizde sitemizin sayfalarını arama motorlarına sunan sitemap sayfamızı yapacağız. Alışılmışın aksine bu sayfamızı dinamik olarak yani içerik girildikçe kendi kendini güncelleyecek ÅŸekilde yapacağız. Öncelikle mantığını anlatayım. Sadece xml ile bunu yapmamız mümkün olmadığından php'den yardım alacağız. Genel olarak site haritalarının isimleri sitemap.xml ÅŸeklinde olur. Fakat bir xml dosyasında php kod kullanamayız. Bu nedenle sayfamızı sitemap.php ÅŸeklinde kaydedeceÄŸiz. Sonrasında ise sunucuyu bunun bir xml belgesi olduÄŸuna inandıracağız. Nasıl derseniz tabiki htaccess dosyamız ile. İlk olarak sitemap.php sayfamızdan baÅŸlayalım anlatmaya.

include ("baglanti.php");//bağlantımızı yaptık
header('Content-type: text/xml');
$domainadi = $_SERVER['SERVER_NAME']; //site ismini değişkene aktardık
echo "<?xml version="1.0" encoding="ISO-8859-9" ?> ";
echo "<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">";
$date = date("Y-m-d");
$xml_ciktisi .= "<url>
<loc>http://".$domainadi."</loc>//site urlmiz
<lastmod>".$date."</lastmod>
<changefreq>daily</changefreq>
<priority>1</priority>
</url> ";
$sayfalar = mysql_query("SELECT * FROM sayfalar ORDER BY no DESC"); // sql kodumuz
while($dinamiklink = mysql_fetch_array($sayfalar))//sayfaları listeletiyoruz(Örnek:iletiÅŸim, hakkımda vb.)
{
$sayfaad = $dinamiklink['sayfaad'];
$dinamiktarih = $dinamiklink['tarih'];
$xml_ciktisi .= "<url>
<loc>http://".$domainadi."/sayfa.php?sayfaadi=".$sayfaad."</loc>
<lastmod>".$dinamiktarih."</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url> ";
};
$yazilarr = mysql_query("SELECT * FROM yazilar ORDER BY no DESC");//sql kodumuz
while($linkler = mysql_fetch_array($yazilar))
{
$makaleno = $linkler['yazino'];
$xml_ciktisi .= "<url>
<loc>http://".$domainadi."/makalesayfa.php?makaleno=".$makaleno."</loc>
<lastmod>".$aciktrh."</lastmod>
<changefreq>daily</changefreq>
<priority>1</priority>
</url> ";
};
$xml_ciktisi .= "</urlset> ";
echo $xml_ciktisi;

Öncelikle xml kodlar standart olarak bir site haritası sayfasında olması gereken kodlardır. Biz bu kodları döngüler aracılığı ile çoÄŸaltarak içine veritabanından çektiÄŸimiz farklı farklı bilgiler yerleÅŸtirdik.
Åžimdi php kodları anlatmaya en baÅŸtan baÅŸlayalım. Öncelikle include komutu ile baÄŸlantı sayfamızı içeri aktardık. Bu sayfamızı veritabanı ile baÄŸlantımızı saÄŸlar. BaÄŸlantı kodlarına önceki makalelerden ulaÅŸabilirsiniz. Sonrasında kolaylık olsun diye domain adımızı bir deÄŸiÅŸkene aktardık. Sonrasında ise o anki tarihi bir deÄŸiÅŸkene aktardık. 2013-08-16 formatında aktardık. Y harfi yılı, m harfi ayı, d harfi ise günü temsil etmektedir. Sonrasında standart olarak xml kodlarımızı yerleÅŸtirdik ve içine site adresimizi ve o anki tarihi yazdık. O anki tarihi yazmamızın amacı sayfanın güncel olduÄŸunu arama motorlarına bildirmektir.
Åžimdi asıl kısma geldik diyebiliriz. Sayfalarımızın isimlerini oluÅŸturuluÅŸ tarihlerini veritabanından çekerek xml'in içine yerleÅŸtirdik. Döngü tüm kayıtları listeleyene kadar dönecektir. Böylelikle her yeni sayfa oluÅŸturmamızda sayfa linkimiz burada listelenecektir. Bunun sonrasında yazdığımız makalelerin bilgilerini/makale numarasını çektik aynı ÅŸekilde ve listelettik. Yine aynı ÅŸekilde her makale yazmamızda makale linkimiz burada listelenecektir ve arama motorlarının bu sayfadan haberi olacaktır. Not olarak söylemeliyim ki linklerde get metodu ile veri yollayarak, bu verileri örneÄŸin makalesayfa.php sayfasında çekerek, çekilen veriye göre veritabanından listeleme mantığı uygulanmıştır. Åžimdi htaccess kodumuza geçelim.
Options +FollowSymLinks
RewriteEngine on
ReWriteRule ^sitemap.xml sitemap.php

Bir metin belgesi oluÅŸturup bu kodları içine yazıp ismini .htaccess olarak sitemap dosyamızla aynı klasöre kaydederek bu iÅŸlemi tamamlamış oluruz. Umarım anlatabilmiÅŸimdir. Anlamadığınız noktada yorum yoluyla sormanız yeterlidir.


author

Aykut ErdoÄŸan

htaccess, sitemap, xml, dinamik

  • Bu Yazılara da Gözat:

    1 Yorum

    author

    Cevapla