یک نکتهی تکمیلی
اگر از IISهای جدید استفاده میکنید، میتوان فیلتر عنوان شدهی در این بحث را حذف و از ماژول Url Rewrite خود IIS استفاده کرد.
الگویی که
در بسیاری از سایتها در مورد آن بحث شدهاست به صورت زیر است:
<system.webServer>
<rewrite>
<rules>
<rule name="Enforce WWW" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{CACHE_URL}" pattern="^(.+):\/\/(?!www\.)(.*)" />
</conditions>
<action type="Redirect" url="{C:1}://www.{C:2}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
این الگو با IIS 7.5 کار نمیکند و خطای زیر را میدهد:
HTTP Error 500.50 - URL Rewrite Module Error.
The expression "{C:1}://www.{C:2}" cannot be expanded.
برای رفع آن باید از الگوی زیر استفاده کرد:
<rule name="Enforce WWW" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{CACHE_URL}" pattern="^(.+):\/\/(?!www\.)(.*)" />
<add input="{HTTP_HOST}" pattern="localhost" negate="true" />
</conditions>
<action type="Redirect" url="https://www.dntips.ir/{R:0}" redirectType="Permanent" />
</rule>
همچنین در این الگو با توجه به تعریف منفی localhost، برای آزمایش لوکال برنامه، مشکلی نخواهید داشت.
به علاوه باید دقت داشت که ماژول Url rewrite به صورت پیش فرض نصب نیست و باید از طریق
web platform installer نصب شود.
HTTP Error 500.19 - Internal Server Error
Error Code 0x8007000d
اگر خطای فوق را مشاهده کردید به معنای عدم نصب ماژول Url rewrite بر روی سرور است.