یکشنبه ۱۶ اردیبهشت ۰۳

سه خط ابتدایی کد بالا در شیوه RegisterRoutes اقدام به فعالسازی Friendly URLs

در این وبلاگ مقالات رسمی و تخصصی سئو سایت منتشر می شود

سه خط ابتدایی کد بالا در شیوه RegisterRoutes اقدام به فعالسازی Friendly URLs

۱,۸۰۴ بازديد

سه خط ابتدایی کد بالا در شیوه RegisterRoutes اقدام به فعالسازی Friendly URLs به رخ پیشفرض کرده و مسیر http://domain .com/contact .aspx را با کد ریدایرکت 301 به مسیر http://domain .com/contact ریدایرکت می کند . در خط انتها هم با استفاده از راه و روش Routing یو آر ال http://domain .com/test/xxx به مسیر mytest .aspx تغییر تحول مسیر داده می شود .

در اینترنت وب سایت های MVC راه routing فقط سیستم نشانی دهی برای یو آر ال هاست، چرا که هیچ فایلی برای نشانی دهی وجود ندارد .
در اکثر وقت ها وب سایت ها نیازی به بالاتر رفتن از مسیر خاص تعریف شده به رخ پیشفرض نیست:
بهترین سئو کار
public
static void RegisterRoutes(RouteCollection routes)
{

routes .IgnoreRoute("{resource} .axd/{*pathInfo}");

routes .MapRoute(


name: "Default",

url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter .Optional
}

);
}

اسلاگ
ها (Slugs) اسلاگ بخش انتهایی قابل قرائت یک یو آر ال هست . این بخش توصیف کننده محتوای برگه بایست بوده و خوبتر میباشد که از لغات مهم در آن استفاده گردیده باشد . در بساری از وب سایت ها نام تیتر صفحه را مستقیما در اسلاگ به فعالیت می برند . به جای مسافت دربین حروف هم از کاراکترهای + یا – به کار گیری می شود . کاراکتر پیشنهادی گوگل، کاراکتر – هست .

بسیای از کارشناسان سئو پیشنهاد می نمایند که تعداد کاراکترهای اسلاگ را نهایتا 75 الی 80 کارکتر در نظر داشته باشید . با این حال گوگل به رخ خودکار کاراکترهای بیشتر بخش اسلاگ را که کار کشته به سناریو آن نیست، حذف می نماید . هیچ توصیه ای از طرف گوگل تا به امروز در این مورد نشده می باشد . این زمینه نشان می دهد که طاقت فرسا گیری خاصی از طرف گوگل در این باره وجود ندارد .

یو
آر ال های کانونیکال برای هر محتوا بایستی تنها یک یو آر ال وجود داشته باشد، این به عبارتی یو آر الیست که ذیل عنوان یو آر ال کانونیکال شناخته می شود . خطر به کارگیری از یکسری یو آر ال برای یک محتوا آنجاست که گوگل اعتبار محتوا را بین چند نشانی تقسیم می کند .
یو آر ال های ذیل به حیث یکسان می رسند:
http://www .domain .com/article/290/seo-for-asp-net-web-sites-urls

http://domain .com/article/290/seo-for-asp-net-web-sites-urls

http://www .domain .com/article/290/Seo-For-Asp-Net-Web-Sites-URLs

در‌صورتی‌که این یو آر ال ها باعث به سناریو یک محتوای اثبات شوند، مشکلی از مشاهده کرد سئو به نام محتوای تکراری به وجود خواهد آمد . به همین برهان می بایست فقط از یک ورژن یو آر ال در پیوند های داخلی استفاده نمائید .

در کنار عملکرد های شما برای لینک و پیوند دادن به صرفا یک ورژن از یو آر ال گشوده هم ممکن میباشد که از طرف شما اشتباهی صورت گرفته یا اینکه شخصی در اینترنت سایتی دیگر، با ورژن متفاتی از ورژن مورد تایید شما به آن کاغذ لینک و پیوند دهد .
در این موقعیت توصیه می شود که از کدهای HTML ای برای اشاره به یو ار ال با اهمیت استعمال فرمایید تا موتورهای جستجو را از یو آر ال کانونیکال آگاه کنید:
/>
ریدایرکت
نسخه بدون www به نسخه دارنده www با تایپ domain .com یا این که www .domain .com ما همیشه به یک آدرس مشخص و معلوم میرسیم . البته همانطور که اشاره شده چنین چیزی از رویت کرد گوگل محتوای تکراری شناخته می شود و از لحاظ سئو درست نمیباشد . اگرچه به کارگیری از یو آر ال کانونیکال می تواند استراتژی خوبی باشد، ولی ریدایرکت یک عدد از نسخه ها به دیگری با به کار گیری از ویژگی URL Rewrite در IIS گزنه بهتریست . برای پیاده سازی این ریدایرکت چه بسا نیاز به وب سرور هم نمی باشد . تنها کافیست که کد ذیل را در پوشه web .config
قرار دهید:








ignoreCase="true" />


/>


redirectType="Permanent" />








3 .
ایندکس شدن محتوا در این بخش به این قضیه خوا‌هیم پرداخت که چگونه موتورهای جستجو را از تکثیر محتوای جدید در وب تارنما آگاه کرده و همینطور در رخ تغییر‌و تحول آدرس محتوا چه کاری بایست انجام دهیم .

نقشه
سایت موتورهای کاوش عموما پیوند ها را دنبال می نمایند و اینگونه چهره ای از دنیای وب به دست می آورند . اگر اینترنت سایت شما دارنده ساختار پیوند خوبی باشد، موتورهای کاوش توانمند به پایش سهل آنها خواهند بود . در غیر این صورت استعمال از نقشه وبسایت برای معرفی لیستی از تمام یو آر ال های تارنما به آن ها ضروریست . نقشه های تارنما علاوه بر این به موتورهای جستجو اعلام می کنند که مهم ترین محتواهای اینترنت سایت کدامند .

گوگل و بینگ عموما از نقشه های تارنما با فرمت XML پشتیبانی می کنند . نقشه سایت باید دربرگیرنده لیستی از یو آر ال های مسئله نظر شما برای پایش و ایندکس باشند . یک API در فریمورک .NET برای تولید فیدهای ATOM و RSS وجود دارااست . این API را می توانایی در System .ServiceModel .Syndication یافت .

هیچ چیزی در اینجا وجود ندارد که از پروتکل نقشه وب سایت پشتیبانی کند، ولی ساختار نقشه وب سایت خیلی پیچیده نمی باشد و می توانید نسبت به ایجاد نقشه وبسایت خود اقدام کنید .
در ابتدا ساختار آن را مرور می کنیم:
encoding="UTF-8"?>




http://www .mikesdotnetting .com/


2015-12-01T12:00:00Z

monthly
0 .5





ریشه این داکیومنت urlset می باشد که شامل Node های url می باشد . فقط Node لازم درون url عنصر loc میباشد که شامل یو آر ال اینترنت تارنما می باشد . Node با مقدار lastmod زمان آخرین تغییر محتوای یو آر ال هست که با استاندارهای W3C DateTime سازگار می‌باشد . از Node با مقدار changefreq هم میتوانید برای اشاره به فرکانس تقریبی دوران تغییر‌و تحول محتوای یو آر ال استفاده کنید . در انتها نیز می‌توانید از priority برای اشاره به اولویت پایش صفحه ها اینترنت سایت به کار گیری کنید . این اولویت را می توانید با مقادیر 0 .1 تا 1 .0 به موتورهای جستجو اعلام نمایید . توضیحات فنی در رابطه ایجاد نقشه سایت در اینترنت وبسایت sitemaps .org آمده میباشد .

لازمات ساخت یک نقشه وب سایت عباتند از: کلاسی برای نمایاندن نقشه وبسایت و مورد های آن، سنجش مقدار changefreq، سیستمی برای توده اوری مورد ها و روشی برای پشت رمز هم قرار دادن آیتم های جمع اوری گردیده و تبدیل آن به فرمت XML .
در ابتدا کلاسی برای SiteMap و گزینه هایش معرفی می کنیم:
public
class SiteMap
{


public List Items { get; set; }
}

public
class SiteMapItem
{


public Uri Loc { get; set; }

public DateTime? LastMod { get; set; }

public ChangeFrequency ChangeFreq { get; set; }

public double? Priority { get; set; }
}

مقادیر
مجاز ChangeFrequency هم این نوع تعریف می شوند:
public
enum ChangeFrequency
{


NotSet,

Always,

Hourly,

Daily,

Weekly,

Monthly,

Yearly,

Never
}

کلاس SiteMapWriter مسئول پشت راز نیز قرار دادن مثال و تبدیل آن ها به XML است . این کلاس متعلق به System .Linq، System .Xml و System .Xml .Linq
می‌باشد بدین ترتیب نیاز هست که از دستورها using برای آن ها استعمال کنیم:
public
class SiteMapWriter
{


private SiteMap _siteMap;

public SiteMapWriter(SiteMap siteMap)

{

_siteMap = siteMap;

}

public void WriteTo(XmlWriter writer)

{
XNamespace ns = "http://www .sitemaps .org/schemas/sitemap/0 .9";

var xml = new XDocument(new XDeclaration("1 .0",
"utf-8", "yes"),

new XElement(ns + "urlset",
_siteMap .Items

.Select(item
=> new XElement(ns + "url",
new XElement(ns + "loc", item .Loc),

item .LastMod .HasValue ? new XElement(ns + "lastmod", item .LastMod .Value .ToString("s")
+ "Z") : null,
item .ChangeFreq != ChangeFrequency .NotSet ? new XElement(ns + "changefreq", item .ChangeFreq .ToString() .ToLower())
: null,
item .Priority .HasValue ? new XElement(ns + "priority", item .Priority .Value)
: null

)

)

)

);
xml .Save(writer);


}
}

این کد یک مثال Sitemap را گرفته و اندازه Items را تکرار می کند تا تیم ای از SiteMapItems به دست آید . همینطور url را هم برای هر مورد ایجاد می کند . شیوه ساخت نقشه وب سایت وابسته به ماهیت اینترنت تارنما شما دارد .
به تیتر نمونه نقشه وب سایت تولیدی زیر از طرز داده های دیتابیس در کنار ورودی های کد گردیده در برگه با اهمیت سایت به دست می آیند:
public
SiteMap GetSiteMap()
{


using (DotnettingContext context = new DotnettingContext())

{
var items = context .Articles .Select(a
=> new

{
ID = a .ArticleID,

Title = a .Headline,

LastModified = a .DateAmended,

DateCreated = a .DateCreated

}) .ToList() .Select(i
=> new SiteMapItem

{
Loc = new Uri(string .Format("http://www .domain .com/article/{0}/{1}", i .ID, i .Title .ToSlug())),

ChangeFreq = ChangeFrequency .Daily,

LastMod = i .LastModified ?? i .DateCreated

}) .ToList();

items .Add(new
SiteMapItem {
Loc = new Uri("http://www .domain .com"),

ChangeFreq = ChangeFrequency .Hourly


});

return new SiteMap { Items = items };

}
}

در‌صورتی‌که از یک اینترنت فرم برای ایجاد اینترنت وبسایت به کار گیری کرده اید، یک هندلر همگانی (فایل .ashx)
انتخاب خیر و خوبی برای سناریو نقشه وب سایت است:
public
class sitemap : IHttpHandler
{


public void ProcessRequest(HttpContext context)

{

var service = new SiteMapService();
var siteMap = service .GetSiteMap();


var siteMapWriter = new SiteMapWriter(siteMap);
using (var output = XmlWriter .Create(context .Response .Output))


{
context .Response .ContentType
= "text/xml";
siteMapWriter .WriteTo(output);


}

}

public bool IsReusable

{

get

{

return false;

}

}
}

در کد بالا فرض شده که رویکرد Getsitmap در کلاسی با نام SiteMapService قرار گرفته میباشد . شما مختارید آن را در هر جایی متناسب با اپلیکیشن خویش قرار دهید . آن گاه این کد فایل XML ایجاد شده به وسیله کلاس SiteMapWriter را در Response می نویسد .

در
یک اپلیکیشن MVC شاید شما علاقه مند به ایجاد ActionResult سفارشی برای ارائه نقشه وب سایت هستید:
public
class SiteMapResult : ActionResult
{


private SiteMap _siteMap;

public SiteMapResult(SiteMap siteMap)

{

_siteMap = siteMap;

}

public override void ExecuteResult(ControllerContext context)

{
context .HttpContext .Response .ContentType
= "text/xml";

var siteMapWriter = new SiteMapWriter(_siteMap);
using (var output = XmlWriter .Create(context .HttpContext .Response .Output))


{
siteMapWriter .WriteTo(output);


}

}
}

در
کد پر و بال ازاین‌حد SiteMapResult در کنترلر به کار گیری می شود:
public
SiteMapResult SiteMap()
{

var siteMap = _service .GetSiteMap();


return new SiteMapResult(siteMap);
}

پس از تولید نقشه تارنما می بایست آن را به گوگل معرفی فرمائید . رویکرد اول اینست که نشانی نقشه وب سایت را در کنسول هر یک از موتورهای کاوش ثبت نمایید . گوگل و بینگ هر دو دارنده کنسول وبمستر برای تصویب این پوشه می‌باشند . روش دوم نیز اینست که نشانی نقشه وب سایت را از نحوه فولدر robots .txt به موتورهای کاوش اطلاع دهید .
تا كنون نظري ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در فارسی بلاگ ثبت نام کرده اید می توانید ابتدا وارد شوید.