Примеры правил URL Rewriting

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Рассмотрим некоторые примеры правил, которые могут часто использоваться.

Переадресация с домена без www на домен с www:

<rule name="Enforce WWW" stopProcessing="true">
  <match url=".*" />
  <conditions>
    <add input="{CACHE_URL}" pattern="^(.+)://(?!www)(.*)" />
  </conditions>
  <action type="Redirect" url="{C:1}://www.{C:2}" redirectType="Permanent" />
</rule>

Удаляем из адреса www:

<rule name="Remove WWW" patternSyntax="Wildcard" stopProcessing="true">
  <match url="*" />
  <conditions>
    <add input="{CACHE_URL}" pattern="*://www.*" />
  </conditions>
  <action type="Redirect" url="{C:1}://{C:2}" redirectType="Permanent" />
</rule>

Например, мы хотим перенаправлять с home на home/index, так как по сути эти два url ведут на один ресурс и тем самым избежать дублей:

<rule name="avoid articles directory" stopProcessing="true">
    <match url="home[/]?$" />
    <action type="Redirect" url="home/index" redirectType="Permanent" />
</rule>

Удаление завершающего строку запроса слеша (например, http://localhost:1234/home/index/1/)):

<rule name="Remove trailing slash" stopProcessing="true">
  <match url="(.*)/$" />
  <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  </conditions>
  <action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>

Если у нас изменился адрес, то мы можем использовать переадресацию со старого адреса на новый:

<rule name="Canonical Host Name" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" negate="true" pattern="^mysite\.com$" />
  </conditions>
  <action type="Redirect" url="http://mysite.com/{R:1}" redirectType="Permanent" />
</rule>

Предотвращение Image Hotlinking - ссылок сторонних сайтов на изображения на нашем сайте:

<rule name="Prevent image hotlinking">
  <match url=".*\.(gif|jpg|png)$"/>
  <conditions>
    <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
    <add input="{HTTP_REFERER}" pattern="^http://mysite\.com/.*$" negate="true" />
  </conditions>
  <action type="Rewrite" url="/images/say_no_to_hotlinking.jpg" />
</rule>

Если сайт доступен по протоколу https, то при обращении к тем же ресурсам сайта, но по протоколу http, сервер будет отправлять ошибку 403. Чтобы избежать этого и просто перенаправить пользователя на тот же запрошенный им ресурс, но только по протоколу https, можно использовать следующее правило:

<rule name="Redirect to HTTPS" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="^OFF$" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

Перевод строки запроса в нижний регистр:

<rule name="Convert to lower case" stopProcessing="true">  
    <match url=".*[A-Z].*" ignoreCase="false" />  
    <action type="Redirect" url="{ToLower:{R:0}}" redirectType="Permanent" />  
</rule>  

Блокирование запроса по IP:

<rule name="Restrict URL" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{REMOTE_ADDR}" pattern="^127.0.0.1$" />
    </conditions>
    <action type="AbortRequest" />
</rule> 
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850