تبدیل آدرس های وب به آدرس های دلخواه از طریق ماژول URL Rewrite در IIS 7.5
ماژول URL Rewrite درخواست های آدرس های وب را به آدرسی ساده ، کاربر پسند و روان برای موتورهای جستجو که برای کاربران و یا در برنامه های وب نمایش داده می شود ، بازنویسی می کند. URL Rewrite قبل از آنکه توسط وب سرور پردازش شود، از قواعد تعریف شده ای ، برای ارزیابی و سپس ترسیم آدرس درخواست شده به آدرس تعریف شده استفاده می کند.
تبدیل آدرس های وب به آدرس های دلخواه با URL Rewrite
شما می توانید منطق بازنویسی صفحه را تعیین نمایید که شامل عبارات منظم و قواعدی است که می تواند براساس درخواست آدرس از طرف هدرهای HTTP و متغیرهای سرور قرار بگیرد. گرچه که وظیفه اصلی این ماژول آسان نمودن نحوه خواندن و نوشتن آدرس های اینترنی سایت می باشد، اما شما همچنین می توانید از این ابزار برای تغییر مسیر ، ارسال پاسخ های دلخواه یا لغو درخواست استفاده نمایید.
بازنویسی محدوده قواعد:
قواعد بازنویسی در دو مجموعه متفاوت تعریف می شوند :
<globalRules> : قواعد موجود در این مجموعه فقط در سطح مدیر سرور می توانند تعریف شوند. قواعد سراسری برای تعیین منطق بازنویسی آدرس در سرتاسر سرور استفاده می شوند. این قواعد با عنوان فایل Applicationhost.config مشخص می شوند.
<rules> : قواعد موجود در این مجموعه با عنوان قواعد تقسیم شده نام برده می شوند و در هر سطحی می توانند تعریف شوند. این قواعد جهت بازنویسی آدرس برای یک یک وب سایت استفاده می شوند. این قواعد می توانند با استفاده از برچسب های <location> در فایل های Applicationhost.config یا web.config اضافه شوند.
ارزیابی قواعد:
هر سطح پیکربندی در IIS می تواند تعدادی قواعد بازنویسی تعریف شده را داشته باشد. ماژول بازنویسی آدرس مجموعه ای از قواعد را با استفاده از الگوریتم زیر پردازش می کند :
۱-ابتدا آدرس با الگوی قواعد همسان خود مقایسه می شود و در صورتی که با قوانین موجود همخوانی نداشته باشد ، ماژول بازنویسی آدرس، پردازش را متوقف می کند و به قاعده بعدی می رود.
۲- اگر با الگو منطبق بود و شرط دیگری برای این قاعده وجود نداشت ، ماژول بازنویسی آدرس عمل مشخص شده برای این قاعده را انجام می دهد و سپس به سراغ قاعده بعدی می رود ، که در آنجا از آدرس جایگزین برای این قاعده استفاده می کند.
۳- اگر با الگو منطبق بود و شرایط دیگری نیز برای آن وجود داشت ، ماژول بازنویسی آدرس، شرایط را ارزیابی می کند و در صورتیکه ارزیابی موفقیت آمیز باشد ، قاعده مشخص شده انجام می شود و سپس آدرس بازنویسی شده به صورت کامل پرداژش می گردد.
دسترسی به تکه های آدرس از یک URL Rewrite :
اطلاع از چگونگی دسترسی بخشهای خاصی از رشته آدرس به قواعد بازنویسی شده از اهمیت بالایی برخوردار است.
آدرس HTTP مانند آدرس مقابل را در نظر بگیرید : http(s)://<host>:<port>/<path>?<querystring>
- <path> : مسیر تعریف شده برابر با الگوی قاعده است.
- <querystring> : آدرس درخواستی تعیین شده توسط کاربر می باشد که در متغیر سرور با نام QUERY_STRING در دسترس است و می تواند با استفاده از شرط داخل قاعده قابل دسترس باشد.
- <host> : آدرس وبسایت است که در متغیر سرور با نام HTTP_HOST در دسترس است و می تواند با استفاده از شرط داخل قانون قابل دسترس باشد.
- <port> : پورت مورد استفاده برای دسترسی به آدرس درخواستی می باشد که در متغیر سرور با نام SERVER_PORT در دسترس است و می تواند با استفاده از شرط داخل قانون قابل دسترس باشد.
- متغیرهای سرور SERVER_PORT_SECURE و HTTPS می توانند برای تشخیص اینکه اتصال امن برقرار باشد مورد استفاده قرار گیرند. این متغیرهای سرور می توانند با استفاده از شرط داخل قانون قابل دسترس باشد.
- متغیر سرور REQUEST_URL می تواند برای دسترسی به کل مسیر آدرس درخواست شده از جمله رشته پرس و جو مورد استفاده قرار گیرد.
به عنوان مثال ، آدرس زیر را در نظر بگیرید :
http://www.mysite.com/content/default.aspx?tabid=2&subtabid=3
که یک قانون بازنویسی به شرح زیر برای آن تعریف شده است :
- الگوی قاعده به عنوان ورودی رشته آدرس content/default.aspx می شود.
- متغیر سرور QUERY_STRING شامل tabid=2&subtabid=3 می شود.
- متغیر سرور HTTP_HOST شامل www.mysite.com می شود.
- متغیر سرور SERVER_PORT شامل ۸۰ می شود.
- متغیر سرور SERVER_PORT_SECURE شامل ۸۰ و HTTPS شامل OFF می شود.
- متغیر سرور REQUEST_URL شامل /default.aspx?tabid=2&subtabid=3 می شود.
توجه داشته باشید که رشته ورودی آدرس اختصاص یافته ، همیشه به محل فایل web.config که در قاعده تعریف شده است ، اشاره می کند.
به عنوان مثال ، اگر یک درخواست برای این آدرس ساخته شود:
http://www.mysite.com/content/default.aspx?tabid=2&subtabid=3
و یک URL Rewrite در فولدر /content برای آن تعریف شده باشد ، سپس قانون تعریف شده، آدرس default.aspx را به عنوان ورودی برمی گرداند.