السلام عليكم ورحمة الله وبركاته .....
سوف أتحدث عن إعادة توجيه الصفحات أي صفحات الpage.aspx وجعلها مثلا page/news/1 أو page.htm وهكذا ومن أهم الفوائد لهذه المقالة هي سرعة الفهرسة لمحركات البحث لصفحتك لان محركات البحث تفضل صفحات الhtm على aspx وتستطيع أيضا جعل رابطك مثل هذا( الموضوع page/) .
نبدا بحمد الله ....
أولا نقوم بإنشاء مشروع جديد بفجول استوديو 2008 بلغة الc#
ثم نقوم بفتح ملف الكنفج(web.confg) ونقوم بإضافة التالي:
<httpModules> <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule,System.Web.Routing,Version=3.5.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35"/> </httpModules>
طبعاً الوسوم <httpmodules> موجودة أنت فقط سوف تضيف الذي في الوسط وهو :
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule,System.Web.Routing,Version=3.5.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35"/>
وأيضاً نضيف
<modules>
<remove name="UrlRoutingModule" />
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule,System.Web.Routing,Version=3.5.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
</modules>وأيضاً نضيف
<handlers>
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>ألان نذهب إلى قائمة website البرنامج ونضيف ملف Global.asax جديد.
تم نذهب إلى قائمة website مرة أخرى ونختار في هذه المرة add reference ونقوم باختيار المكتبة System.Web.Routing
بعدها نعود إلى ملف الglobal.asax ونستدعي المكتبة بالطريقة التالية :أعلى الصفحة...
<%@ Import Namespace="System.Web.Routing" %>
وبعدها نقوم بإضافة كلاس من قائمة website تم add new item تم class.
ونقوم بتسميتها MemberRouteHandler.cs ونقوم بمسح كامل الكود الذي فيها ونضيف هذا الكود:
using System.Web.Compilation;
using System.Web.UI;
using System.Web;
using System.Web.Routing;
public interface IRoutablePage
{
RequestContext RequestContext { set; }
}
public class MemberRouteHandler : IRouteHandler
{
public MemberRouteHandler(string virtualPath)
{
this.VirtualPath = virtualPath;
}
public string VirtualPath { get; private set; }
public IHttpHandler GetHttpHandler(RequestContext
requestContext)
{
var page = BuildManager.CreateInstanceFromVirtualPath
(VirtualPath, typeof(Page)) as IHttpHandler;
if (page != null)
{
var routablePage = page as IRoutablePage;
if (routablePage != null) routablePage.RequestContext = requestContext;
}
return page;
}
}بعدها نقوم بإنشاء مجلد جديد داخل الموقع ولنسميه مثلاً news ونضيف فيه صفحة جديدة.
نعود ألان إلى ملف global.asax ونقوم بحذف الكود التالي منه:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
}ونضيف بدلا منه الكود التالي:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add("MemberList", new Route
(
"news/1",
new MemberRouteHandler("~/news/Default.aspx")
));
}حيث يعني أننا قمنا باستبدال اسم الصفحة default الموجودة داخل المجلد news بالاسم news/1 وهكذا ....
إذا أرتد تكرار هذا أي عمله لصفحة أخرى ما عليك سوى تكرار الكود التالي:
routes.Add("MemberList", new Route
(
"news/1",
new MemberRouteHandler("~/news/Default.aspx")
));طبعاً مع تغيير كلاً من أسم الصفحة وأسم البديل وأيضاً إعطاء متغير جديد (memberlist) أي قم بتغيير الاسم إلى أي اسم تريد.
والسلام عليكم ورحمة الله وبركاته....
