منم مدتی بود که دنبال این کار بودم. همونطور که 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 هم نداشتم
بخاطر همین توصیه می کنم دوستانی که اطلاعات تکمیل تری در این زمینه دارند خطاهای این متن رو اصلاح کنند.