View Full Version : سوال: ساخت Url Rewriting
xcomlock
پنج شنبه 24 اردیبهشت 1388, 20:09 عصر
چطوری پسوند فایل های aspx رو از انتهای صفحاتم در URL حذف کنم ؟
mah.yar
یک شنبه 03 آبان 1388, 13:56 عصر
سوال کماکان پابرچاست!
pouran
یک شنبه 03 آبان 1388, 15:42 عصر
با سلام
به لینک زیر مراجعه کن شاید کمک کنه
http://barnamenevis.org/forum/showthread.php?t=108346
BahmanDB
یک شنبه 03 آبان 1388, 17:00 عصر
دوستان من یه مثال دیدم تو یکی از سایتها خیلی خوب بود و خودم هم تست کردم روش اسونی بود می تونید از این روش استفاده کنید
البته مثال این آموزش هم هست که می تونید از اون کمک بگیرید .
که شامل سه تا صفحه می باشد یه در ریشه و دو تا صفحه هم در داخل پوشه
Dir1
به نامهای :
Page1.aspx
و
Page1.aspx
خوب شروع کنیم :
1-
به سایتمون فایل global.asax را اضافه می کنیم . ( کلیک راست بر روی وب سایت ، انتخاب گزینه Add New Item… و انتخاب گزینه Global Application Class ) . سپس درون این فایل متد زیر را اضافه می کنیم :
void Application_BeginRequest(object sender, EventArgs e)
{
string fullOrigionalpath = Request.Url.ToString();
if (fullOrigionalpath.Contains("~/Dir1/(.+)/"))
{
Context.RewritePath("~/Dir1/$1.aspx");
}
}
این متد زمانی فراخوانی میشه که یک درخواست برای مشاهده یک آدرس به سرور ارسال میشه . آدرس درخواست شده درون متغیر fullOrigionalpath ذخیره میشه و بررسی می کنیم چنانچه این آدرس متعلق به یکی از صفحات درون دایرکتوری Dir1 باشه و شکل آدرس درخواستی مثلا به شکل ~/Dir1/Page1/ باشه اون رو به آدرس واقعیش هدایت کنه . عبارت (.+) به معنای "هرچیزی" هست ، یعنی هر چیزی بعد از /Dir1/ بیاد به جای عبارت $1 در دستور Context.RewritePath("~/Dir1/$1.aspx"); قرار بگیره . مثلا اگر ما آدرس ~/Dir1/Page1/ رو درخواست کنیم به آدرس ~/Dir1/Page1.aspx میریم .
خوب از فایل وب کانفیگ یه سری پرمیشن می دیم و یه سر کد هم اضافه می کنیم
به web.config رفته و در زیر تگ <configsection> عبارت زیر رو قرار میدیم.
<section name="rewriter" requirePermission="false"
type="Intelligencia.UrlRewriter.Configuration.RewriterCo nfigurationSectionHandler, Intelligencia.UrlRewriter" />
</configSections>
و پس از تگ <system.web> ، عبارت زیر را :
<httpModules>
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
</httpModules>
و بالاخره بعد از تگ بسته </system.web> عبارت زیر را وارد می کنیم :
<rewriter>
<rewrite url="~/Dir1/(.+)/" to="~/Dir1/$1.aspx" />
</rewriter>
حالا کافیه در صفحه Default.aspx دو عدد Button بگذارید و در رویداد هر یک کدهای زیر رو وارد کنید :
<protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/Dir1/Page1/");
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("~/Dir1/Page2/");
}
البته یادم نرفته بگم که یه فایل
Dll
هم هست که اونو باید Add کنین(در فایل ضمیمه) .
بازم سوالی داشتین من در خدمتم با تشکر موفق باشین .
peymannaji
یک شنبه 03 آبان 1388, 19:26 عصر
این یه مقاله خوب فارسی : http://www.aspcode.ir/Article.aspx?id=29
بنده هم با این کتابخانه کار میکنم و راهنماشم موجوده در سایت : http://www.urlrewriting.net/
موفق باشید
SAMARE
چهارشنبه 28 بهمن 1388, 14:16 عصر
دوستان من یه مثال دیدم تو یکی از سایتها خیلی خوب بود و خودم هم تست کردم روش اسونی بود می تونید از این روش استفاده کنید
البته مثال این آموزش هم هست که می تونید از اون کمک بگیرید .
که شامل سه تا صفحه می باشد یه در ریشه و دو تا صفحه هم در داخل پوشه
Dir1
به نامهای :
Page1.aspx
و
Page1.aspx
خوب شروع کنیم :
1-
به سایتمون فایل global.asax را اضافه می کنیم . ( کلیک راست بر روی وب سایت ، انتخاب گزینه Add New Item… و انتخاب گزینه Global Application Class ) . سپس درون این فایل متد زیر را اضافه می کنیم :
void Application_BeginRequest(object sender, EventArgs e)
{
string fullOrigionalpath = Request.Url.ToString();
if (fullOrigionalpath.Contains("~/Dir1/(.+)/"))
{
Context.RewritePath("~/Dir1/$1.aspx");
}
}
این متد زمانی فراخوانی میشه که یک درخواست برای مشاهده یک آدرس به سرور ارسال میشه . آدرس درخواست شده درون متغیر fullOrigionalpath ذخیره میشه و بررسی می کنیم چنانچه این آدرس متعلق به یکی از صفحات درون دایرکتوری Dir1 باشه و شکل آدرس درخواستی مثلا به شکل ~/Dir1/Page1/ باشه اون رو به آدرس واقعیش هدایت کنه . عبارت (.+) به معنای "هرچیزی" هست ، یعنی هر چیزی بعد از /Dir1/ بیاد به جای عبارت $1 در دستور Context.RewritePath("~/Dir1/$1.aspx"); قرار بگیره . مثلا اگر ما آدرس ~/Dir1/Page1/ رو درخواست کنیم به آدرس ~/Dir1/Page1.aspx میریم .
.
دوست عزيز ممنونم از كد هايي كه گذاشتيد ولي متد شما براي حالتي هست كه يك id از يك صفحه به صفحه ديگر منتقل نميشه
ممنون ميشم متدي رو بنويسيد كه بين دوصفحه يك id هم جابجا ميشه!!!
مثلا اگه بخوام EmailMarketing/CreateCustomer/EditSegment.aspx?IDSegment=58 (http://EmailMarketing/CreateCustomer/EditSegment.aspx?IDSegment=58)
به EmailMarketing/CreateCustomer/EditSegment.aspx
تبديل بشه يعني idاز ديد كاربر مخفي بمونه !!!
hamid_200611
چهارشنبه 28 بهمن 1388, 20:33 عصر
البته این مشکل در ASP.NET 4 حل شده ونیاز به هیچ dll خاصی نیست.
uthman
چهارشنبه 15 خرداد 1392, 12:50 عصر
سلام دوست عزیز.من یه چند وقتیه خیلی بهrewrite نیاز دارم و می خوام یاد بگیرم و تو این سایت هم مطالب زیادی بود ولی بازم نفهمیدم چه جوری کار میکنه .مثلا این اشکال رو نفهمیدم.$1 یا .+() یا (a-z). و یکم هم در مورد کلاس contex نفهمیدم چی هست و چه کاربردی داره.اگه میشه کمکم کنید
uthman
چهارشنبه 15 خرداد 1392, 14:05 عصر
دست شما درد نکنه.عالی بود
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.