جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
چگونگي بازنويسي آدرس ها (UrlRewriting)
-(4 Body) 
چگونگي بازنويسي آدرس ها (UrlRewriting)
Visitor 1503
Category: کامپيوتر

کار UrlRewriting تبديل يک آدرس اينترنتي واضح و با معنا به يک آدرس واقعي داراي Query String جهت تفسير موتور Asp.net است. دو آدرس زير را در نظر بگيريد :

http://aspcode.ir/article.aspx?id=4&type=print

http://aspcode.ir/article-4-print.html

يقينا" آدرس دوم با معني تر از آدرس اول است.در ضمن تا حدودي امکان هک شدن سايت از طريق تزريق عبارات Sql را کاهش مي دهد. اجازه دهيد ابزار هاي موجود براي UrlRewriting را بررسي کنيم.

بعد از ظهور Asp.net 2.0 خبر پشتيباني استاندارد اين تکنولوژي از UrlRewriting بسيار جالب توجه بود. براي اين منظور در Asp.net 2.0 تنها کافيست مقداري تغيير در Web.Config دهيد :

 <urlMappings enabled="true">
      <add url="~/show-5.htm"
              mappedUrl="~/show.aspx?id=5" />
</urlMappings>

دقت فرماييد تنظيمات فوق متعلق به شاخه <system.web> مي باشد و بايد در اين بخش از Web.Config تعريف شود. در مثال بالا url آدرسي است که کاربر مشاهده مي کند و mappedUrl آدرس حقيقي ماست. اما همانطور که از ظواهر امر پيداست اين روال کاري، تنها براي مواقعي مفيد خواهد بود که تعداد دفعات استفاده محدود باشد و در صورتي که تعداد آدرس ها بالا باشد ، مديريت آنها بسيار کار مشکل و زمانبري خواهد بود.

براي حل اين مشکل ابزار هاي ديگري در دسترس برنامه نويسان قرار گرفته است. يکي از بهترين ابزار ها را مي توان در سايت www.UrlRewriting.net يافت. جهت استفاده از اين ابزار که Open Source هم مي باشد ، مي توانيد مستندات آن و تمام آنچه که نياز داريد از آدرس فوق دانلود کنيد.
هر چند که مستندات و مطالب ارائه شده در سايت فوق کاملا" جامع است ، ولي در ادامه اين مقاله، توجه شما را به مثال هايي از UrlRewriting در Asp.net جلب مي کنم.

ابتدا فايل ضميمه مقاله را دريافت کنيد و Intelligencia.UrlRewriter.dll را به پوشه Bin پروژه خود انتقال دهيد. حال مراحل زير را جهت بازخواني يک آدرس ثابت دنبال کنيد :

فايل Global.asax را باز و
رويداد Application_BeginRequest را بصورت زير کد نويسي مي کنيم. همانطور که از نام اين رويداد پيداست زماني کد اجرا مي شود که درخواستي به سمت موتور Asp.net ارسال شود.

if (Request.Url.ToString().Contains("show.htm"))
{
      Context.RewritePath("show.aspx");
}

در اين مثال محتواي صفحه اي با نام show.htm که بصورت مجازي ايجاد شده است و وجود خارجي ندارد از صفحه اي ديگر با نام show.aspx خوانده مي شود.
سپس فايل web.config را باز و محتواي آن را به صورت
زير تنظيم نماييد :

<configSections>
<section name="rewriter" type="Intelligencia.UrlRewriter.Configuration. RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
</configSections>

<httpModules>
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
</httpModules>

<rewriter>
<rewrite url="show.htm" to="show.aspx"/>
</rewriter>
 

لطفا" به محل قرار گرفتن تغييرات دقت ويژه اي داشته باشيد :

<configSections> :  داخل تگ <configuration> قرار گيرد.
<httpModules> : 
داخل تگ <system.web> قرار گيرد.
<rewriter> :
داخل تگ <configuration> و خارج و بعد از تگ<system.web> قرار گيرد.

توجه فرماييد کد کامل برنامه را نيز مي توانيد در انتهاي برنامه دانلود نماييد.

مخفي کردن Query String :
شايد به ذهن شما رسيده باشد که چگونه مي توان آدرس هاي مجازي
داراي Query String را نيز بازنويسي کنيم. اين کار نيز بسيار ساده است و تفاوتهاي جزئي با مثال بالا دارد.
براي اينکار
دوباره فايل Global.asax را باز و رويداد Application_BeginRequest را بصورت زير کد نويسي مي کنيم :

if (Request.Url.ToString().Contains("show-(.+).htm"))
{
      Context.RewritePath("show.aspx?id=$1");
}

علامت (.+) نماينده يک متغير است که مقدار Query String را مي گيرد و $1 در خط بعدي همان مقدار (.+) و نماينده مقدار Query String در آدرس حقيقي است. همچنين تگ rewrite را بصورت زير تغيير دهيد :

<rewrite url="show-(.+).htm" to="show.aspx?id=$1"/>

در صورتي که آدرس شما داراي بيش از يک پارامتر Query String است (براي مثال سه پارامتر) بصورت زير عمل کنيد :

show-(.+)-(.+)-(.+).htm
Show.aspx?Page=$1&amp;Id=$2&amp;state=$3

همچينين تگ rewrite را مانند مثالها قبلي تغيير دهيد.
فکر مي کنم با مثال هاي متعدد در اين مقاله، شما اين مهارت را پيدا کرده باشيد تا  آدرس ها را بصورت مجازي ايجاد کنيد.

نکته :

دقت کنيد که در بازخواني
آدرسهاي با چندين پارامتر Query String در قسمت آدرس حقيقي قبل از & ، amp; را قرار دهيد. در ضمن براي بازخواني مقدار Query String نياز به کد نويسي خاصي نيست و با در نظر گرفتن مثال فوق بعد از UrlRewriting با دستور زير در صفحه show.aspx مي توانيم مقدار Query String را بخوانيم :

Response.Write((string)Request.QueryString["id"]);

برگرفته از سايت سخا روش

Add Comments
Name:
Email:  
User Comments:
SecurityCode: Captcha ImageChange Image