{"id":99,"date":"2009-03-11T17:05:00","date_gmt":"1970-01-01T00:00:00","guid":{"rendered":"http:\/\/www.yazilimmutfagi.com\/?p=99"},"modified":"2018-11-15T14:46:42","modified_gmt":"2018-11-15T11:46:42","slug":"asp-net-ile-dinamik-site-haritasi-olusturmak","status":"publish","type":"post","link":"https:\/\/www.yazilimmutfagi.com\/index.php\/2009\/03\/11\/asp-net-ile-dinamik-site-haritasi-olusturmak\/","title":{"rendered":"ASP.NET ile Dinamik Site Haritas\u0131 Olu\u015fturmak."},"content":{"rendered":"\n<p>Daha \u00f6nceki makalemizde site haritalari nedir, nasil kullan\u0131l\u0131r, XML yap\u0131s\u0131 nas\u0131l olmal\u0131d\u0131r, XML yap\u0131s\u0131 i\u00e7erisinde kullanmam\u0131z gereken karakterler gibi konulara de\u011finmistik. E\u011fer site haritalar\u0131 hakk\u0131nda bilginiz yoksa <a href=\"http:\/\/www.yazilimmutfagi.com\/index.php\/2009\/03\/02\/site-haritasi-nedir-neden-kullanilir-hangi-yapida-olmalidir-escape-karakterler-nedir\/\">\u00f6nceki makalemizi<\/a> okuman\u0131z\u0131 tavsiye ederim.<\/p>\n\n\n\n<p>\u00d6nceki makalemizde manuel olarak site haritas\u0131 haz\u0131rlamaya de\u011findik, peki manuel olarak site haritas\u0131 haz\u0131rlayarak google&#8217;a g\u00f6ndermenizin dezavantajlar\u0131var m\u0131d\u0131r? Varsa bu dezavantajlardan nas\u0131l kurtulabiliriz.<\/p>\n\n\n\n<p>E\u011fer sitenizin i\u00e7eri\u011fi s\u00fcrekli de\u011fi\u015fiyor veya s\u00fcrekli yeni i\u00e7erik ekleniyorsa bir s\u00fcre sonra site haritan\u0131z g\u00fcncelli\u011fini kaybeder. \u00d6rne\u011fin yaz\u0131l\u0131m mutfa\u011f\u0131 sitesinde her yeni makale eklendi\u011finde bu makaleye ait yeni bir url ortaya \u00e7\u0131k\u0131yor. Ayr\u0131ca makale i\u00e7in eklenmi\u015f olan her yeni etikette yeni bir url olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor.<\/p>\n\n\n\n<p>Google\u2019in ana sayfam\u0131za ula\u015ft\u0131\u011f\u0131 zaman yeni makalemizi bulup linkleri takip ederek g\u00fcncel i\u00e7eri\u011fi indekslemesi s\u00f6z konusu ama bir site haritas\u0131ndaki linkleri bularak indeksleme i\u015flemini yerine getirmesi her zaman daha hizl\u0131 ve daha kesin olacakt\u0131r. \u00d6yleyse her yeni i\u00e7erik eklendi\u011finde site haritam\u0131z\u0131 a\u00e7arak yeni url leri tek tek yaz\u0131p bunu yeniden google\u2019a g\u00f6ndermek gerekiyor!  O zaman nerde kald\u0131 otomasyon. Bir sayfa yapsak ve bu sayfa bizim yerimize veritaban\u0131m\u0131zdaki bilgileri alarak t\u00fcm url leri otomatik olarak \u00fcretse ve bunlar\u0131 site haritas\u0131 yap\u0131s\u0131na \u00e7evirdikten sonra XML olarak d\u00f6nd\u00fcrse. Google\u2019a g\u00f6sterdigimiz site haritas\u0131 yolunu da sitemap.xml seklide degil de sitemap.aspx seklinde g\u00f6stersek t\u00fcm sorunlar\u0131m\u0131z \u00e7\u00f6z\u00fcl\u00fcr.\u00d6yleyse bunu nas\u0131l yapacag\u0131m\u0131za gelelim.<\/p>\n\n\n\n<p>Yapt\u0131\u011f\u0131m\u0131z \u00f6rnek \u00e7al\u0131\u015fmaya ait kodlara buradan ula\u015fabilirsiniz.<br>Kategori ad\u0131nda bir tablomuz var, her kategori i\u00e7in yeni bir url olu\u015fturup site haritam\u0131za eklemek istiyoruz ve bu i\u015flemin siteye yeni kategori eklendi\u011finde de otomatik olarak yap\u0131lmas\u0131n\u0131 istiyoruz. Sizin \u00f6rne\u011finizde bu kategori de\u011fil de makalede olabilir.<\/p>\n\n\n\n<table class=\"wp-block-table has-fixed-layout is-style-regular\"><tbody><tr><td>No<br><\/td><td>KategoriAdi<\/td><\/tr><tr><td>1<\/td><td>ASP.NET<\/td><\/tr><tr><td>2<\/td><td>ASP<\/td><\/tr><tr><td>3<\/td><td>CSharp<\/td><\/tr><tr><td>4<\/td><td>PHP<\/td><\/tr><tr><td>5<\/td><td>HTML<\/td><\/tr><\/tbody><\/table>\n\n\n\n<p>Web sitemize sitemap.aspx diye yeni bir sayfa ekiyoruz. Bu sayfanin html k\u0131sm\u0131na herhangi bir ekleme yapmam\u0131za gerek yok. Sadece kod k\u0131sm\u0131na a\u015fag\u0131daki fonksiyonu ekleyip pageload da bu fonksiyonu \u00e7a\u011f\u0131r\u0131yoruz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>protected void Page_Load(object sender, EventArgs e)\n{\n    SiteHaritasiniDondur();\n}\nprivate void SiteHaritasiniDondur()\n{\n    StringBuilder strBuilder = new StringBuilder();\n    strBuilder.AppendLine(\"&lt;?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\");\n    strBuilder.AppendLine(\"&lt;urlset xmlns=\\\"http:\/\/www.sitemaps.org\/schemas\/sitemap\/0.9\\\">\");\n\n    #region AnaSayfa\n    \/\/AnaSayfamizi manuel olarak  Ekliyoruz.\n    \/\/veritabanindan \u00e7ekerek olusturamayacaginiz degisken olmayan linkleri bu seklide ekleyin.\n    strBuilder.AppendLine(\"&lt;url>\");\n    strBuilder.AppendLine(\"&lt;loc>\");\n    string makaleLink = String.Format(\"http:\/\/www.yazilimmutfagi.com\");\n    strBuilder.AppendLine(makaleLink);\n    strBuilder.AppendLine(\"&lt;\/loc>\");\n    strBuilder.AppendLine(\"&lt;changefreq>\");\n    strBuilder.AppendLine(\"always\");\n    strBuilder.AppendLine(\"&lt;\/changefreq>\");\n    strBuilder.AppendLine(\"&lt;priority>\");\n    strBuilder.AppendLine(\"1\");\n    strBuilder.AppendLine(\"&lt;\/priority>\");\n    strBuilder.AppendLine(\"&lt;\/url>\");\n    #endregion\n\n    \/\/kategorilere gore sayfalari ekle\n  nbsp;  #region Kategoriler\n    SqlConnection conn = new SqlConnection(\"Data Source=.;Initial Catalog=Ornek;Integrated Security=True;\");\n    conn.Open();\n    SqlDataAdapter da = new SqlDataAdapter(\"Select * from Kategori\", conn);\n    DataTable dt = new DataTable();\n    da.SelectCommand.ExecuteNonQuery();\n    da.Fill(dt);\n    foreach (DataRow row in dt.Rows)\n    {\n        strBuilder.AppendLine(\"&lt;url>\");\n        strBuilder.AppendLine(\"&lt;loc>\");\n        string kAd = row[\"KategoriAdi\"].ToString();\n        string kID = row[\"No\"].ToString();\n        if (kAd.Contains(\u2018(\u2018))\n        {\n            kAd = kAd.Substring(0, kAd.IndexOf(\u2018(\u2018));\n        }\n       \/\/linki olusturuken &amp; yerine &amp; kullaniyoruz. aksi takdirde hata verir.\n        makaleLink = String.Format(\"http:\/\/www.yazilimmutfagi.com\/Default.aspx?KategoriID={0}&amp;Kategori={1}\", kID, kAd);\n        strBuilder.AppendLine(makaleLink);\n        strBuilder.AppendLine(\"&lt;\/loc>\");\n        strBuilder.AppendLine(\"&lt;changefreq>\");\n        strBuilder.AppendLine(\"weekly\");\n        strBuilder.AppendLine(\"&lt;\/changefreq>\");        \n        strBuilder.AppendLine(\"&lt;priority>\");\n        strBuilder.AppendLine(\"0.5\");\n        strBuilder.AppendLine(\"&lt;\/priority>\");\n        strBuilder.AppendLine(\"&lt;\/url>\");\n    }\n    #endregion\n\n    strBuilder.AppendLine(\"&lt;\/urlset>\");\n    Response.ContentType = \"text\/xml\";\n    Response.Write(strBuilder.ToString());\n    Response.End();\n}<\/code><\/pre>\n\n\n\n<p>Yukaridaki  kodu inceleyecek olursaniz tek yaptigimiz veritabanindaki kategorileri alarak web sitemize uygun bir seklide link haline getirip bir string olarak siteharitamiza ekliyoruz. En sonda yazdigimiz;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Response.ContentType = \"text\/xml\";\nResponse.Write(strBuilder.ToString());\nResponse.End();<\/code><\/pre>\n\n\n\n<p>Kod par\u00e7as\u0131 ise olu\u015fturdu\u011fumuz site haritas\u0131n\u0131 XML olarak d\u00f6nd\u00fcr\u00fcyor. Sayfam\u0131z\u0131 \u00e7a\u011f\u0131rd\u0131\u011f\u0131m\u0131z zaman a\u015fa\u011f\u0131daki XML metni ile kar\u015f\u0131la\u015f\u0131r\u0131z.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;urlset>\n  &lt;url>\n    &lt;loc>\n      http:\/\/www.yazilimmutfagi.com\n    &lt;\/loc>\n    &lt;changefreq>\n      always\n    &lt;\/changefreq>\n    &lt;priority>\n      1\n    &lt;\/priority>\n  &lt;\/url>\n  &lt;url>\n    &lt;loc>\n     http:\/\/www.yazilimmutfagi.com\/Default.aspx?KategoriID=1&Kategori=ASP.NET\n    &lt;\/loc>\n    &lt;changefreq>\n      weekly\n    &lt;\/changefreq>\n    &lt;priority>\n      0.5\n    &lt;\/priority>\n  &lt;\/url>\n  &lt;url>\n    &lt;loc>\n      http:\/\/www.yazilimmutfagi.com\/Default.aspx?KategoriID=2&Kategori=ASP\n    &lt;\/loc>\n    &lt;changefreq>\n      weekly\n    &lt;\/changefreq>\n    &lt;priority>\n      0.5\n    &lt;\/priority>\n  &lt;\/url>\n  &lt;url>\n    &lt;loc>\n      http:\/\/www.yazilimmutfagi.com\/Default.aspx?KategoriID=3&Kategori=CSharp\n    &lt;\/loc>\n    &lt;changefreq>\n      weekly\n    &lt;\/changefreq>\n    &lt;priority>\n      0.5\n    &lt;\/priority>\n  &lt;\/url>\n  &lt;url>\n    &lt;loc>\n      http:\/\/www.yazilimmutfagi.com\/Default.aspx?KategoriID=4&Kategori=PHP\n    &lt;\/loc>\n    &lt;changefreq>\n     weekly\n    &lt;\/changefreq>\n    &lt;priority>\n      0.5\n    &lt;\/priority>\n  &lt;\/url>\n  &lt;url>\n    &lt;loc>\n      http:\/\/www.yazilimmutfagi.com\/Default.aspx?KategoriID=5&Kategori=HTML\n    &lt;\/loc>\n    &lt;changefreq>\n      weekly\n    &lt;\/changefreq>\n    &lt;priority>\n      0.5\n    &lt;\/priority>\n  &lt;\/url>\n&lt;\/urlset><\/code><\/pre>\n\n\n\n<p>Geriye kalan<a href=\"https:\/\/www.google.com\/webmasters\/#?modal_active=none\"> Google webmaster<\/a>\u2019a gidip site haritas\u0131 yolu olarak sitemap.aspx sayfam\u0131z\u0131 g\u00f6stermek. Art\u0131k Google ne zaman site haritam\u0131z\u0131 \u00e7ekmeye kalkarsa en g\u00fcncel site haritam\u0131z\u0131 alm\u0131\u015f olacak.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>E\u011fer sitenizin i\u00e7eri\u011fi s\u00fcrekli de\u011fi\u015fiyor veya s\u00fcrekli yeni i\u00e7erik ekleniyorsa bir s\u00fcre sonra site haritan\u0131z g\u00fcncelli\u011fini kaybeder. \u00d6rne\u011fin yaz\u0131l\u0131m mutfa\u011f\u0131 sitesinde her yeni makale eklendi\u011finde bu makaleye ait yeni bir url ortaya \u00e7\u0131k\u0131yor. Ayr\u0131ca makale i\u00e7in eklenmi\u015f olan her yeni etikette yeni bir url olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor.<\/p>\n","protected":false},"author":517,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[407],"tags":[4229,5216,5646,5051,4474,5774],"_links":{"self":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/99"}],"collection":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/users\/517"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/comments?post=99"}],"version-history":[{"count":11,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/99\/revisions"}],"predecessor-version":[{"id":4534,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/99\/revisions\/4534"}],"wp:attachment":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/media?parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/categories?post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/tags?post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}