Harmankaya Logo

PHP İle Sitemap Yapımı

KAS 18

Saat: 00:22:55 Gösterim: 1566
Site HaritasıMerhabalar uzun zamandır bloğuma yazı yazmadığımı biliyorum. Ceviz.net de geçenlerde gördüğüm birkaç soru üzerine böyle bir yazı yazma kararı aldım diyebilirim.

Öncelikle Sitemap Nedir?  

Sitemap sitenize gelen ziyaretçileri sitenizin saçmasapanlığından kurtarmak için oluşturulmuş bir arayüzdür aslında. Hakkaten de öyle değilmidir. Bazen bir siteye girersiniz ve bakarsınız aradığınız şey yok, veya var ama göremiyorsunuz. Çatt ...açarsınız site haritasını bulursunuz neye gireceğinizi. Şahsen ben telsim.com.tr de çok yapıyordum bundan 4-5 sene önce

Peki Google Sitemap nedir?

Bu konuda Google'ı bir ziyaretçi gibi düşünün ve bu ziyaretçinin gerizekalı olduğunu varsayalım  Sitenizin arayüzü gelen ziyaretçi olan Google'ın kafasını oldukça karıştıracaktır. Peki bunun için webmastelar nasıl bir çözüm üretmiş? Bir site haritası yapıyorlar, sitede bulunan bütün içeriği o sayfaya (haritaya yani) yazıyorlar ve google sıradan inceliyor. Adam yeni konu mu eklemiş, bi konu en son ne zaman değişmiş vs...

Peki Sitemap nasıl hazırlanır?
Sitemap hazırlamanın bir çok yolu var. Bunlar için ilk olarak ücretsiz sitemap oluşturma programlarını kullanabilirsiniz.http://www.web-design-pros.ca/software/sitemapGenerator.jnlp adresindeki java program ile mesela 50.000 linke kadar bir siteharitası oluşturabilirsiniz.

Şimdi kendi kendimize soruyoruz. Peki sitede bir güncelleme vs. yaparsam veya yeni konu eklersem her seferinde sitemap yapmak mı zorundayım? 

Cevap: Evet ( zıh zıh zıh )

İşte burda duruma PHP el koyuyoruz( I love you PHP ) PHP ile sitemap hazırlamada mantık mysql_fetch_array() yada mysql_fetch_assoc() gibi herzaman kullandığımız bir fonksiyonlar verileri sayfalama yapmadan bütün bir sayfaya basıyoruz. Evet ne kadar kolay değilmi. Bir tane döngü ile aslında hiçbir uğraşmaya gerek kalmadan sitemapımız otomatik olarak oluşuyor ve verileri sürekli veritabanından çektiği için ise sitemapınız sürekli güncel kalıyor.

Şöyle bir şey yapalım bir Sitemap da neler bulunmalıdır. Şu örnekten de bakabileceğiniz gibi bir sitemap da

URL: Bağlantı verilen sayfanın linki

Priority: Önemi

Change Frequency: Değişme Sıklığı

LastChange : Son Değiştirilme

bunlar bulunması gerekiyor. İşte Goolge' ı salak dedikya işte o da böyle anlıyor. Ne yapsın

Evet bunları da anlattıktan sonra kendi sitemap.php sayfamın kodlarını size açıyorum. Ve birkaç tüyo vereceğim. Öncelikle siteharitalarının genellikle XML biçiminde olduğunu unutmuyoruz ve şunuda ekliyorum ki biz php kodu yazıyoruz ve oluşturcağımız sayfayı XML gibi yorumlatacağız işte burda devreye ne giriyor  tabiki de header("Content-type: text/xml\n\n");

Neyse huzurlarınızda kod örneklerini de vereyim. Ama kodları şu anda sitemde verirken XML kodlarından problem çıktığı için başka bir site üzerinden veriyorum. Sonra kendi siteme de eklerim.

<?
header("Content-type: text/xml\n\n");
///////////////veriler dökülüyor/////////////////////////////
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-9\"?>
<?xml-stylesheet type=\"text/xsl\" href=\"sitemap.xsl\"?>
<urlset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\http://www.sitemaps.org/schemas/sitemap/09/sitemap.xsd\
 xmlns=

\"http://www.sitemaps.org/schemas/sitemap/0.9\">";
$query = mysql_query("SELECT id, title,timestamp, zamann FROM yazilarim order by id");
while($yazi = mysql_fetch_assoc($query)) {
$link = "http://www.harmankaya.org/yazi-".$yazi[id]."-".adresle($yazi[baslik]).".html";
echo "
 <url>
  <loc>".$link."</loc>
  <lastmod>".$yazi[gun]."T".$yazi[zaman]."+00:00</lastmod>
  <changefreq>always</changefreq>
  <priority>0.9</priority>
</url>";
}
echo "
</urlset>";

?>

Görüldüğü gibi verilerimizi sayfaya döküyoruz sizde benim kullandığım ve adını hatırlamadığım bir siteden aldığım style dosyasını sitemap.xsd yi kullanabilirsiniz. Bu arada unutmadan sitemap.php yaptığınız dosyayı sitemap.xml yazarak göstermek istiyorsanız mod_rewrite konumu gözden geçirin. Yerini bilmiyorsanız Arama Motorum emrinize amade

Hadi iyi site haritası oluşturmalar. Bir sorun çıkarsa İletişim kısmından ya da adresim  adresimden benle iletişime geçebilirsiniz.Wink

 

 

 

 

 

Detaylı BilgiArkadaşına GönderYazıcıya Aktar


İM'le

Yorumlar( 5 )

Yorum Gönder

#1 gönderenGönderen: Ömer gönderme zamanıZaman: 17:51:43/2008-04-03

Kişisel yorumlarla yardımcı konuları okumaktan hiç sıkılmıyorum.Çok harika açıklamışsın.Saol paylaştığın için


#2 gönderenGönderen: ahmet gönderme zamanıZaman: 13:03:16/2008-07-16

hocam güzel bir makale olmuş eline sağlık.ben de localhostta denedim linkleri verdi ama http://www.harmankaya.org/sitemap.xml şurada olduğu gibi düzenli alt alta değil linkler yan yana oldu ve link özelliği yok yani yazı şeklinde bunu nasıl düzeltebiliriz acaba.


#3 gönderenGönderen: Erhan gönderme zamanıZaman: 18:02:50/2008-07-16

Ahmet ;

Bunu yapabilmek için XML style dosyasını da sunucunuza atmanız gerekir. Benim sitemden yani şuradan www.harmankaya.org/sitemap.xsl dosyayı alabilirsiniz.

İyi günler


#4 gönderenGönderen: erkan dursun gönderme zamanıZaman: 02:47:56/2008-08-14

selamun aleyküm , ben gösterdiğiniz şekilde yapmaya çalıştım fakat olmadı nedense, sanırım bi yerlerde eksiklikler var...

sitemap.php

<?
include('***************');
include('***************');
?>
<?function permayap($deger) {
$turkce=array("ş","Ş","ı","(",")","'","ü","Ü","ö","Ö","ç","Ç"," ","/","*","?","ş","Ş","ı","ğ","Ğ","İ","ö","Ö","Ç","ç","ü","Ü");
$duzgun=array("s","S","i","","","","u","U","o","O","c","C","-","-","-","","s","S","i","g","G","I","o","O","C","c","u","U");
$deger=str_replace($turkce,$duzgun,$deger);
$deger = preg_replace("@[^A-Za-z0-9\-_]+@i","",$deger);
return $deger;
}
?>
<?
header("Content-type: text/xml\n\n");
///////////////veriler dökülüyor/////////////////////////////
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-9\"?>
<?xml-stylesheet type=\"text/xsl\" href=\"gss.xsl\"?>
<urlset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\http://www.sitemaps.org/schemas/sitemap/09/sitemap.xsd\ xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">";
$query_haberler = "SELECT * FROM haberler where aktifmi='1' order by id desc";
while ($l=mysql_fetch_assoc($query_haberler))
{
$i=$i+1;

$idx = $l['id'];
$tarih=$l['tarih'];
$baslik=$l['baslik'];
$link="http://www.siteadi.com/haber-ayrinti-".permayap($baslik)."-".$idx.".html";

echo "<url>
<loc>$link</loc>
<lastmod>".$tarih."</lastmod>
<changefreq>always</changefreq>
<priority>0.9</priority>
</url>";
}
echo "</urlset>";
?><?include('********/kapat.php');?>

bu yukardaki sitemap.php kodlarımdı,
xls style dosyasınıda sizin sitenizdekini kullandım...

RewriteRule ^sitemap.xml$ sitemap.php [L,NC]

bu kısımda .htaccess'e ekledigim kod...acaba nerde yanlış yapıyorum, sayfaya linkleri basıyor ama xml olarak değil düz html gibi basıyor xml olarak basmıyor yani sayfa kaynagında linkler
<url>
<loc>http://www.siteadi.com/haber-ayrinti-SGK-Amblem-ve-isimleri-hakkinda-833.html</loc>
<lastmod>11-08-2008</lastmod>
<changefreq>always</changefreq>
<priority>0.9</priority>
</url>

şeklinde gözüküyor fakat sayfada sadece veriler gözüküyor yani xml kodları yok oluyor sebebi nedir acaba?


#5 gönderenGönderen: erkan dursun gönderme zamanıZaman: 03:03:04/2008-08-14

neyse sorunu çözdüm sizin makalede verdiğiniz header örneğinde 2 tane " işareti eksik, doğrusunu alta ekliyorum

header("Content-type: text/xml\n\n");
///////////////veriler dökülüyor/////////////////////////////
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-9\"?>
<?xml-stylesheet type=\"text/xsl\" href=\"sitemap.xsl\"?>
<urlset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/09/sitemap.xsd\" xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">";


burdaki çalışan düzgün hali, makalen için teşekkürler, çok yardımcı oldun Allah razı olsun...


Blog Kategori

Son YAZILAR

sON YORUMLAR

Sponsor Reklamlar


Blogging Blogs - BlogCatalog Blog Directory
Personal blogs
Listed in LS Blogs the Blog Directory and Blog Search Engine
Bloggapedia, Blog Directory - Find It!
Blog Directory - photarium
Firefox 2

Hukuk Bürosu
Egenin Kalbi