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