URL rewrite в IIS 7

Задача — сделать перенаправление на адрес https://example.com/app/ со следующих адресов:

  • http://example.com/app
  • http://example.com
  • https://example.com

Стандартое перенаправление не устраивает — при попытке открыть http://example.com/bad_url попадаем на адрес https://example.com/app/bad_url вместо 404-й ошибки.

Решение — скачиваем и устанавливаем расширение для IIS – URL Rewrite. В корне сайта правим файл web.config.

web.config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
      <rewrite>
          <rules>

              <rule name="redirect HTTP requests" stopProcessing="true">
                  <match url="(^$)|(^app$)|(^app\/)" />
                      <conditions>
                          <add input="{HTTPS}" pattern="off" />
                      </conditions>
                  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/app/{R:1}" />
              </rule>

              <rule name="redirect HTTPS requests" stopProcessing="true">
                  <match url="(^$)" />
                      <conditions>
                          <add input="{HTTPS}" pattern="on" />
                      </conditions>
                  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/app/" />
              </rule>

          </rules>
      </rewrite>
  </system.webServer>
</configuration>

Комментарии