برگزیده های پرشین تولز

آموزش : چگونه پسوند صفحات وب را مخفی کنیم !!! (url rewriting)

ehsan707

Guest
تاریخ عضویت
30 اکتبر 2007
نوشته‌ها
22
لایک‌ها
0
این فقط برای سریع ترین و کم درد سر ترین حالت ممکن برای کنترل ساب دومین کاربرد داره زمانی که شما وقت کافی برای چیزهای دیگر ندارید یا راه دیگری ندارید.
برای هر دایکتوری یک نام وجود دارد که برابر نام ساب دومین است این نام را به یک صفحه میفرستد که آدرس کامل سایت هم همراه دارد نام را گرفته و هر کاری که لازم است انجام میدهد.
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
من با این کد مشکل دارم .
تاپیک اول رو خوندم و انجامش دادم .
روی لوکال خود Visual Studio 2005 به خوبی کار میکنه و اجرا میشه .
ولی روی لوکال هاست ویندوز XP و حتی رو هاست خود سایت که ASP.NET 2 هستش اصلا اجرا نمیشه و Error میده !:eek:
میگه نمیتونه صفحه ای با آدرس فوق رو پیدا کنه در حالی در Visual Studio 2005 به خوبی اجرا میشه !
لطفا بگید من چیکار باید بکنم ؟ ؟ ؟
نمیدونم واقعا شما پست شماره 11 همین تایپک رو خوندی ؟!؟!؟!؟
 

ma_christian

Registered User
تاریخ عضویت
25 ژانویه 2007
نوشته‌ها
368
لایک‌ها
2
محل سکونت
Tehran
سلام

من از این کد برای استفاده می کنم. برای فایل های کامل جواب می گیرم. یعنی اگر آدرس وارد شده بصورت test.html بود می توانم محتوای آنرا از آدرس test.aspx بخوانم. ولی مشکل اینجاست اگر من بخواهم که آدرسی مثل test.aspx?Id=2l را به اینصورت test-2.html بخوانم چکار باید بکنم؟

PHP:
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
        Dim myContext As HttpContext = HttpContext.Current

        Dim rewrite_regex As Regex = New Regex("(.+)\/((.+)\.html)", RegexOptions.IgnoreCase)

        Try
            Dim match_rewrite As Match = rewrite_regex.Match(myContext.Request.Path.ToString())
            If match_rewrite.Groups(2).Captures(0).ToString() = "test.html" Then

                myContext.RewritePath("test.aspx")

            End If
        Catch ex As Exception
            Response.Write("Error , try again")

        End Try

    End Sub
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
به دلایلی که یک دفعه هم قبلا توضیح دادم توی IIS نمیتونید روی پسوندی غیر از پسوند هایی که به asp.net برای پردازش ارجا داده میشن عمل باتزنوسی آدرس رو انجام دید مگر اینکه در تنظیمات IIS بهش بگید که مثلا HTML رو هم به asp.net ارجا بده که به جز داشتن یک dedicated server هیج راه دیگری نداره .

البته سروری که با خود ویژال استدیو دات نت میاد همه پسوند رو به دات نت فریم ورک ارجا میده حتی JPG رو برای همین هر پسوند الکی رو هم که بخواید میتونید بازنویسی کنید ولی توی IIS جواب نمیده
 

ma_christian

Registered User
تاریخ عضویت
25 ژانویه 2007
نوشته‌ها
368
لایک‌ها
2
محل سکونت
Tehran
پسوند آدرس زیاد مهم نیست. همون aspx هم باشه مسئله ای ندارد...
ولی من منظورم این هست که چطور می توانم با آن کد بالا صفحه ای مثل test.aspx?Id=2 را به صورت test-2.aspx بخوانم؟
 

ma_christian

Registered User
تاریخ عضویت
25 ژانویه 2007
نوشته‌ها
368
لایک‌ها
2
محل سکونت
Tehran
مشکلم با پست اول این تاپیک حل شد.

ممنون از امین عزیز ...
 

s.r

کاربر تازه وارد
تاریخ عضویت
31 دسامبر 2005
نوشته‌ها
52
لایک‌ها
0
rewrite اتجام می شه(با استفاده از مثال حاوی فایل dll )ولی تصاویر در صفحات مجازی لود نمیشه. لطفا راهنمایی بفرمایید.
 

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
با اجازه همه دوستان

در این زمینه من یه PDF پیدا کردم که یه روش دیگه رو رفته
 

فایل های ضمیمه

  • URLReWrite.pdf
    106 KB · نمایش ها: 160

mohsenkarami

کاربر تازه وارد
تاریخ عضویت
13 نوامبر 2009
نوشته‌ها
4
لایک‌ها
0
rewrite اتجام می شه(با استفاده از مثال حاوی فایل dll )ولی تصاویر در صفحات مجازی لود نمیشه. لطفا راهنمایی بفرمایید.

منم همین مشکل رو دارم.من آدرس تصاویر و stylesheet رو نسبی دادم:blush:
 

Paniaco

Registered User
تاریخ عضویت
19 آگوست 2009
نوشته‌ها
559
لایک‌ها
5
محل سکونت
ESFAHAN
این موردهای مثل سایت بانک صادرات که پسوند فایلها bs. شده چطوری هست؟ به خصوص برای خوندن query string ها؟

دنبال راهش با پی اچ پی هستم، کسی میدونه ؟
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
انجمن php اتاق بقلی اه ! :)

در مورد بانک ها هم سرور اختصاصی دارند که میتونن IIS رو تنظیم کنن هر جور پسوندی که دلشون میخواد رو به دات نت فریم ورک ارجا بده !
 

nourizadeh

کاربر تازه وارد
تاریخ عضویت
12 نوامبر 2008
نوشته‌ها
1
لایک‌ها
0
منم مدتی بود که دنبال این کار بودم. همونطور که H_R گفتند بطور معمول توی asp.net برای پیاده کردن آدرسها بصورت dd/ee/ff ممکن نیست. اگرچه کامپوننت urlrewriternet خیلی کمک می کنه اما باید حتما آخر آدرسها به .aspx ختم بشه تا بطور معمول IIS متوجه بشه که باید این آدرس رو به dotNET Framework تحویل بده تا کامپایل بشه و این موقع هست که این کامپوننت(urlrewriternet) فعال میشه و آدرسها رو بازنویسی می کنه. پس در نهایت می تونه آدرسهامون بشکل dd/ee/ff.aspx تبدیل بشه.
البته (و بطور غیر معمول شاید!!) برای حذف aspx هم اینجا: http://www.ifinity.com.au/Products/KB/Url_Master/topic/Switching+off+page+extensions+in+IIS توضیح کامل داده شده.
از جمله اینه که در IIS 6 یا حتی IIS 5 باید بصورت دستی در قسمت mapping سایت در IIS فایلهای با پسوند "*." (یعنی همه فایلها) رو به ISAPI مربوط به dotnetframework یعنی همون فایل "aspnet_isapi.dll" تنظیم بکنیم تا IIS کلیه درخواستها رو به IIS بفرسته و این یعنی... این یعنی اینکه همه درخواستها با این isapi پاسخ داده می شن حتی فایلهای استاتیک تصویر و جاوا اسکریپت و html!!! وهمونطور که توی سایت ifinity اشاره شده فعلا کسی بررسی نکرده(یا کرده و ما خبر نداریم) که آیا این کار از لحاظ کارایی درسته یا نه. ظاهراً که به هیچ وجه درست نیست و یاعث ناکارآمدی سایت در ترافیک های بالا خواهد شد. پس بهتره که اگر هاست شما از IIS 5.0 or 6.0 استفاده می کنه از خیر اینکار کلا بگذرید - البته بماند که فرض شده که شما دسترسی local به هاستتون دارید.

اما گویا قضیه IIS 7.0 کمی فرق می کنه. البته توی IIS 7.0 هم همان مراحل بالا تکرار می شود اما با 2 تفاوت اساسی:

1. فایلهای استاتیک(jpg,html,js,css,...) توسط iis اجرا خواهند شد و دیگر سربار dotnetframework نخواهند بود. با این کار بار بسیار بزرگی از دوش dotnetframework برداشته می شود.

2. mapping (به اصطلاح نگاشت فارسی) در این نسخه از IIS بصورت pipeline انجام می شود و امکان ترتیب بندی extension ها یا همان پسوند فایلها وجود دارد. یعنی تعیین کنیم که فایلهای با پسوند فلان به فلان isapi و سپس فایلهای با پسوند دیگر به فلان isapi دیگر و به همین ترتیب تا در آخر فایل هایی که باقی می مانند و در هیچکدام از موارد بالا صدق نکردند به isapi مربوط به dotnetframework تحویل داده شوند. پس از لحاظ بار کاری نیز کمی به نفع dotnetframework تمام می شود.

و نکته سوم :) که بسیار مهم است نیازی به دسترسی local نیست و می توان با استفاده از فایل web.config این تنظیمات را در iis اعمال کرد.

بنظر می رسه که asp.net با این تفاسیر و راه ها باز هم در مقابل php کم نیاورده اما باید منتظر نتیجه ها بنشینیم و تحلیل هایی که در آینده ارائه می شوند و یا راههای جدیدتری که ابداع خواهند شد روببینیم.

البته مطمئن نیستم که همه مطالب رو به درستی متوجه شده باشم چون خیلی سریع مطالعه کردم و وقت نکردم خودم کامل این مراحل رو طی کنم. ضمن اینکه iis 7.0 هم نداشتم :rolleyes: بخاطر همین توصیه می کنم دوستانی که اطلاعات تکمیل تری در این زمینه دارند خطاهای این متن رو اصلاح کنند.
 

mohammad_kazem

کاربر تازه وارد
تاریخ عضویت
4 جولای 2012
نوشته‌ها
1
لایک‌ها
0
برای این کار یک dll بسیار مفید و کارساز وجود داره که لازمه دانلود کنیم . پس از دانلود این dll که نامش هست Intelligencia.UrlRewriter.dll اون رو به دایرکتوری bin وب سایتمون اضافه می کنیم (add reference) .
حالا به web.config رفته و در زیر تگ <configuration> عبارت زیر رو قرار میدیم.​

سلام خدمت همه دوستان. من یه کاربر تازه وارد و همچنین تازه کار هستم. در مقاله بالا یه کمک لازم دارم و اونم اینکه چطوری میشه این dll رو با add reference به دایرکتوری bin اضافه کنم.لطفا کمکم کنید.
با تشکر
 

Mr.4

همکار بازنشسته
کاربر فعال
تاریخ عضویت
12 آگوست 2008
نوشته‌ها
1,866
لایک‌ها
526
سن
94
محل سکونت
آسمانها و فراتر از آن
سلام خدمت همه دوستان. من یه کاربر تازه وارد و همچنین تازه کار هستم. در مقاله بالا یه کمک لازم دارم و اونم اینکه چطوری میشه این dll رو با add reference به دایرکتوری bin اضافه کنم.لطفا کمکم کنید.
با تشکر
هنمنطور که گفتید تازه شروع کردید پس نیازیی نیست که از روش ها قدیمی استفاده کنید :ی این روش برای قبل از .net4 بود در حال حاضر از URL Routing استفاده میکنن خیلی کد نویسی رو ساده تر میکنه
اخرین پست این تاپیک برای November 29th, 2010 :یی

منبع اموزشی :URL Routing in ASP.NET 4 - 4GuysFromRolla.com

اما اگه میخواید از این dll استفاده کنید به این شکل dll رو اضافه کنید
References > Add Reference > Browse
 
بالا