آموزش url rewriting در asp.net

بسم الله الرحمن الرحیم

تغییر آدرس و بهینه سازی آدرس ها aspx

همانند پروژه های asp.net mvc ممکن است شما بخواهید در پروژه های web form نام صفحات و یا پسوند پروژه خود را از aspx به نام دیگری تغییر دهید و یا حتی پسوند صفحات را نمایش دهید.

یکی از روش های بسیار ساده ای که وجود دارد استفاده از module ایی با نام URL Rewrite می باشد.

برای ادامه این آموزش module را می بایست دانلود نمایید

حجم فایل ها کمتر از 7 مگابایت است

دانلود نسخه x86 URL Rewrite module

دانلود نسخه x64 URL Rewrite module

همچنین از طریق لینک زیر می توانید نسخه های مختلف URl Rewriting را دانلود نمایید

http://www.iis.net/downloads/microsoft/url-rewrite

پس از دانلود فایل را نصب نمایید، تا قابلیت URL Rewriting به Visula Stuido شما و همچنین IIS اضافه شود.

در صورتی که بخواهید برای صفحات خود از URL rewrite در IIS استفاده کنید می توانید به صورت زیر مراحل را طی نمایید. اما اگر بخواهید تغییرات خود را به صورت مستقیم در Visual Stuido در فایل web.config اعمال کنید کافی است چند خط کد اضافه نمایید.

ابتدا تغییر آدرس یا همان  URL Rewriting را در IIS بررسی می کنیم و سپس به سراغ Visual Studio می رویم.

اگر با IIS تاکنون کاری انجام نداده اید نگران نباشید کافی است در پایان چند خط کد را در web.config خود Copy/Paste کنید زیرا چه از طریق IIS و چه به صورت مستقیم این کار را انجام دهید تفاوتی نخواهد داشت.

URL Rewriting در IIS

 ابتدا یک فایل aspx با نام article ایجاد نمایید و کدهای زیر را در آن قرار دهید. سپس این فایل را در مسیر زیر قرار دهید

C:\inetpub\wwwroot

مسیر بالا، مسیر قرار گیری سایت پیش فرض در IIS است. اگر مسیر شما متفاوت است کافی است IIS Manager را باز کنید و سایت و از سمت چپ بر روی default website کلیک راست کنید و سپس explorer را انتخاب کنید تا پوشه مربوطه در کامپیوتر شما باز شود.

حال صفحه بالا کپی کنید.

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL Rewrite Module Test</title>
</head>
<body>
<h1>URL Rewrite Module Test Page</h1>
<table>
<tr>
<th>Server Variable</th>
<th>Value</th>
</tr>
<tr>
<td>Original URL: </td>
<td><%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
</tr>
<tr>
<td>Final URL: </td>
<td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
</tr>
</table>
</body>
</html>

Creating a rewrite rule

برای Rewrite کردن صفحات می بایست شما قوانینی را بنویسید تا بر اساس آن صفحات مورد نظر شما با آدرس جدید نمایش داده شوند.

برای مثال آدرس ما به صورت زیر است

http://localhost/article.aspx?id=342&title=some-article-title

آدرس بالا یک آدرس معمولی در aspx است، اما ما میخواهیم این آدرس به صورت آدرس های MVC نمایش داده شود، یعنی پارامتراها به جای ؟ با علامت "/" از یکدیگر جدا می شوند و پسوند "Aspx" از فایل ها حذف می شود. نتیجه آدرس بالا باید به صورت زیر شود:

ViewDatahttp://localhost/article/342/some-article-title

برای تبدیل آدرس ابتدایی به آدرس دوم می بایست مراحل زیر را انجام دهید:

IIS Manager خود را باز کنید.

بر روی Default website کلیک کنید.

از قسمت  وسط صفحه بر روی گزینه URL Rewrite کلیک کنید.

url rewrite

حال از پنجره سمت راست (Actions Pane) بر روی گزینه Add rules… کلیک کنید.

url rewrite

حال در پنجره باز شده بر روی Blank Rule کلیک کنید و Ok را انتخاب کنید.

تغییر آدرس در aspx

در این قسمت می بایست اطلاعات زیرا ثبت نمایید:

1- نام rule

2- Pattern ایی که برای URL مد نظر دارید

3- شرط ها (اختیاری است)

4- تعیین اتفاقی که می خواهید در صورت true شدن Pattern رخ دهد.

این موارد را یکی یکی بررسی می کنیم.

تغییر آدرس در aspx

نام rule خود را Rewrite to article.aspx قرار می دهیم.

در قسمت Pattern عبارت زیر را وارد نمایید:

^article/([0-9]+)/([_0-9a-z-]+)

این عبارت یک regular expression است که بیان می کند آدرس ما باید با عبارت article شروع شود و پس از آن یک / قرار گیرد بعد از این / می تواند عددی یک یا چند رقمی باشد و دوباره باید یک / قرار گیرد و سپس عبارتی شامل عدد و حروف می تواند وجود داشته باشد.

از قسمت Action گزینه Rewrite را انتخاب کنید و سپس عبارت زیر را در کادر مربوطه وارد نمایید.

article.aspx?id={R:1}&title={R:2}

تبدیل آدرس aspx به mvc

حال بر روی گزینه Apply کلیک کنید تا rule شما ذخیره شود.

کاری ما انجام داده ایم در واقع این بود که از IIS خواسته ایم اگر کاربری الگویی را به صورت زیر وارد کرد

^article/([0-9]+)/([_0-9a-z-]+)

که این الگو می تواند  شامل آدرس هایی به صورت های زیر باشد

article/12/Esmaeil
article/2/Esmaeil001

آنها را تبدیل به آدرس زیر کند

article.aspx?id={R:1}&title={R:2}

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

اگر می خواهید برنامه خود را به صورت لوکال و یا بدون استفاده از IIS تست کنید کافی است کد زیر را در web.config خود کپی کنید.

<rewrite>
<rules>
<rule name="Rewrite to article.aspx">
<match url="^article/([0-9]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" />
</rule>
</rules>
</rewrite>

کد بالا نتیجه ی همان فعالیت هایی است که در IIS انجام دادید، در واقع IIS نیز همین کدها را ایجاد و در web.config سایت شما قرار می دهد.

حال اگر وب سایت خود را با آدرس زیر اجرا کنید

http://localhost/article/234/some-title

نتیجه زیر را مشاهده خواهید کرد.

تبدیل آدرس aspx به mvc

توجه داشته باشید ممکن است آدرس سایت شما با ما متفاوت باشدبه همین دلیل بهتر است ابتدا سایت خود را اجرا کنید و سپس آدرس زیر را به انتهای آدرس خود اضافه کنید.

article/234/some-title

 درنهایت اگر درون کد خود با استفاده از دستورات Request.QueryString مقادیر id و title را بخوانید عدد 234 و some-title را بدست خواهید آورد.

با استفاده زا روش می توانید از ساختار سنتی و قدیمی ASPX خارج شده و پروژه هایی با جذابیت بیشتر ایجاد نمایید.

نظرات (۰)

هيچ نظري هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی