آموزش و سورس نحوه ایجاد sitemap.xml به صورت پویا در Asp.Net
آموزش و سورس نحوه ایجاد sitemap.xml به صورت پویا در Asp.Net
در این پست نحوه ایجاد sitemap.xml به صورت داینامیک را در Asp.Net به صورت کامل توضیح می دهیم.
در پست قبلی نحوه ایجاد صفحات داینامیک در Asp.Net را توضیح دادیم در این آموزش جهت کامل تر شدن آموزش قبلی این آموزش را دنبال کنید.
یکی از مولفه های اصلی در بهبود سئو داشتن فایل sitemap.xml به روز میباشد. این فایل حاوی لینکهای موجود در وب سایت میباشد که موتورهای جستجو مختلف از آن برای شناسایی و ایندکس لینکهای هر دامنه استفاده میکنند. در رابطه با صفحات داینامیک مانند بلاگها این فایل باید با استفاده از داده های موجود در پایگاه داده ساخته شود.
برای ایجاد فایل sitemap.xml ما از دو متد استفاده کردیم.
متد WritePageNameInSiteMap
private void WritePageNameInSiteMap() { try { XmlWriter writer = XmlWriter.Create(Server.MapPath("~/sitemap.xml")); writer.WriteStartDocument(); writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9"); WriteTag("1.0", "Daily", "http://www.iranganj.ir", writer); WriteTag("0.5", "weekly", "http://www.iranganj.ir/about.aspx", writer); WriteTag("0.5", "Monthly", "http://www.iranganj.ir/contact-us.aspx", writer); string query = "SELECT [PostID], [PageName], [Title], [Content] FROM [Pages]"; string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; using (SqlConnection con = new SqlConnection(conString)) { using (SqlCommand cmd = new SqlCommand(query)) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.Connection = con; sda.SelectCommand = cmd; using (DataSet ds = new DataSet()) { sda.Fill(ds, "ds"); foreach (DataRow dr in ds.Tables[0].Rows) { WriteTag("0.5", "Daily", "http://www.iranganj.ir/" + "post/" + dr["PostID"] + "/" + dr["PageName"], writer); } } } } } writer.WriteEndDocument(); writer.Close(); } catch (System.Exception ex) { } }
در متد اول sitemap.xml را ایجاد کردیم و سپس همان طور که ملاحظه میکنید لینکهای ثابت وب سایت به صورت دستی اضافه شده و همچنین لینک های که از دیتابیس با دستور foeach خوانده می شود به فایل sitemap.xml اضافه می شود. این متد را باید زمانی که یک مطلب جدید به دیتابیس اضافه می شود فراخوانی کنید تا هر مطالب جدیدی که به سایت اضافه می شود فایل sitemap.xml بروز رسانی شود.
متد WriteTag
private void WriteTag(string priority, string freq, string navigation, XmlWriter myWriter) { myWriter.WriteStartElement("url"); myWriter.WriteStartElement("loc"); myWriter.WriteValue(navigation); myWriter.WriteEndElement(); myWriter.WriteStartElement("lastmod"); myWriter.WriteValue(DateTime.Now.ToShortDateString()); myWriter.WriteEndElement(); myWriter.WriteStartElement("changefreq"); myWriter.WriteValue(freq); myWriter.WriteEndElement(); myWriter.WriteStartElement("priority"); myWriter.WriteValue(priority); myWriter.WriteEndElement(); myWriter.WriteEndElement(); }
کار این متد نوشتن تگ ها می باشد که سه ورودی می گیرد
- loc : در این تگ آدرس URL صفحه قرار میگیرد.
- lastmod : مشخص کننده تاریخ آخرین آپدیت صفحه میباشد.
- changefreq : بیانگر میانگین دوره زمانی آپدیتهای صفحه میباشد و مقادیر آن میتوانند hourly, daily, weekly, monthly و yearly باشند. همچنین برای صفحاتی که قرار نیست آپیدیت شوند از never استفاده کنید.
- priority : مقدار این تگ بین صفر تا یک هست و از آن برای مشخص کردن اولویت صفحه میتوانید استفاده کنید. مقدار پیش فرض آن نیم میباشد توجه داشته باشید این مقدار در تناسب با دیگر صفحات هست و اگر شما به تمام صفحات اولیت یک را بدهید یعنی هیچ صفحه ای بر دیگری اولیت ندارد.
تنها المان loc اجباری است و بقیه المانها اختیاری هستند.
نکته های درباره فایل sitemap.xml
- تمامی url ها باید متعلق به یک هاست باشند.
- حداکثر طول رشته ای فایل 2048 کاراکتر میباشد.
- حداکثر تعداد URL ها 50000 میباشد.
- حداکثر سایز فایل 50 مگا بایت میباشد.
نظر / سوال