Yaptığım bütün sitelere koyduğum bu özellik ASP ile dinamik sitemap.xml oluşturmaya yarıyor. Aslın biraz düşünce çok basit bir işlem ASP’nin ContentType’i XML formatına çevirmeniz yetiyor. Sonrasında veri tabanındaki tablolara göre döngülerle listeleme yapmak. Bunu ben biraz geliştirdim ve bir xsl dosyasıyla xml dosyasına stil verdim. Örnek için bu adrese bakabilirsiniz: Stand Tasarım Şimdi diyeceksiniz ki bunun uzantısı .asp olması gerekmiyor muydu? Sitede SEO ya uygun URL biçimleri için 404 hatalarını kullanıyorum ve sitemap.xml yazıldığında sitemap.asp’yi çağırıyorum yani hangisini yazarsanız yazın aynı yer açılıyor.
sitemap.xml Dosyası ne işe yarıyor diyorsanız bir web sitesine ait site url haritasıdır. Amacı; sayfalarınızı Google’ın biran önce tanıyıp indekslemesidir. Bu sebeple bir web sitesi için kaçınılmaz bir ihtiyaçtır.
Şimdi gelelim kodlara:
[asp title=”sitemap.asp”]
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="css/sitemap.xsl"?>
<%
Response.Buffer = True
Response.ContentType = "text/xml"
%>
<!–#include file="includes/ayarlar.asp"–>
<!–#include file="includes/baglanti.asp"–>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<%
Private Function isoDate(dtmDate)
Dim strYear
Dim strMonth
Dim strDay
Dim strHour
Dim strMinute
Dim strSecound
strYear = Year(dtmDate)
strMonth = Month(dtmDate)
strDay = Day(dtmDate)
If strMonth < 10 then strMonth = "0" & strMonth
If strDay < 10 then strDay = "0" & strDay
isoDate = strYear & "-" & strMonth & "-" & strDay
End Function
Set rsFatih = Server.CreateObject("Adodb.Recordset")
‘//////////////////// — Ürün Kategorileri — \\\\\\\\\\\\\\\\\\\\
rsFatih.Open "SELECT * FROM tblUrunKategori WHERE goster = 1 order by KategoriID DESC", adoCon, 1, 3
Do While Not rsFatih.Eof
Response.Write (vbCrLf & " <url>"& _
vbCrLf & " <loc>" & strSiteAdresi & SEOLink("urunkat", rsFatih("SEO")) & "</loc>" &_
vbCrLf & " <changefreq>weekly</changefreq>"&_
vbCrLf & " <priority>0.8</priority>"&_
vbCrLf & " <lastmod>" & isoDate(Now()-2) & "</lastmod>"&_
vbCrLf & " </url>")
rsFatih.Movenext
Loop
rsFatih.Close
‘//////////////////// — Ürünler — \\\\\\\\\\\\\\\\\\\\
rsFatih.Open "SELECT * FROM tblUrunler WHERE durum = 1 AND Onay = 1 order by tarih DESC", adoCon, 1, 3
Do While Not rsFatih.Eof
Response.Write (vbCrLf & " <url>"&_
vbCrLf & " <loc>" & strSiteAdresi & SEOLink("urun", rsFatih("SEO")) & "</loc>"&_
vbCrLf & " <lastmod>" & isoDate(rsFatih("tarih")) &"</lastmod>"&_
vbCrLf & " <changefreq>weekly</changefreq>"&_
vbCrLf & " <priority>0.8</priority>"&_
vbCrLf & " </url>")
rsFatih.Movenext
Loop
rsFatih.Close
‘//////////////////// — Sayfalar — \\\\\\\\\\\\\\\\\\\\
rsFatih.Open "SELECT * FROM tblSayfalar WHERE durum = 1 order by SayfaNo DESC", adoCon, 1, 3
Do While Not rsFatih.Eof
Response.Write (vbCrLf & " <url>"&_
vbCrLf & " <loc>" & strSiteAdresi & SEOLink("sayfa", rsFatih("SEO")) & "</loc>"&_
vbCrLf & " <lastmod>" & isoDate(rsFatih("tarih")) &"</lastmod>"&_
vbCrLf & " <changefreq>weekly</changefreq>"&_
vbCrLf & " <priority>0.8</priority>"&_
vbCrLf & " </url>")
rsFatih.Movenext
Loop
rsFatih.Close
Set rsFatih = Nothing
%>
<url>
<loc><%=strSiteURL%>iletisim-bilgileri</loc>
<lastmod><%=isoDate(NOW())%></lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
[/asp]
Gerekli yerleri değiştirdiğinizde sorunsuz çalışan ve dinamik bir sitemap dosyanız olmuş olur. Buradan sitemap.xsl dosyasıyla beraber indirebilirsiniz.
Teşekkürler iki gözüm.
!!öNEMLİ!!
İyi güzelde ayarlar.asp ve baglanti.asp eksik email ile o dosyaları gönderirsen sevinirim.
ayarlar.asp ile baglanti.asp yi sizin web sitenizdeki db ile bağlantı yapan dosyayı ve ayarlarınızın aldığı dosyayı include edeceksiniz. Yoksa direk siledebilirsiniz.
Sevgili Fatih, yeni konu eklendiğinde bu konuları karışık olarak nasıl listeleyeceğiz.
404.asp kullanıyorum ancak XML yönlendirmesi çalışmıyor 404 yönlendirme içeriğine örnek verebilirmisiniz.