IIS 7 каноническое перенаправление URL - PullRequest
8 голосов
/ 02 мая 2011

Я хотел бы, чтобы на веб-сайте всегда был адрес www, и принудительно вводил его с помощью перезаписи IIS.

Например, test.com стал бы www.test.com.

Типичный пример правила перезаписи:

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

Однако для этого требуется ввести полный URL-адрес моего веб-сайта.Он не будет работать для сред разработки и промежуточных сред с URL-адресами, такими как www.test.dev и www.test.stage.

Можно ли создать правило перезаписи IIS, которое будет обрабатывать все эти случаи?

Ответы [ 3 ]

4 голосов
/ 06 августа 2011

У меня есть для вас другое решение:

<rule name="Canonical domain name" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9]+)$" />
    </conditions>
    <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>
1 голос
/ 02 мая 2011

Вы правы, что полный URL должен быть в файле web.config. У вас есть варианты, хотя.

  1. Вы можете использовать преобразование конфигурации, чтобы регулярное выражение соответствовало правильной среде.

  2. Кажется, что нет никакого вреда, если вы включите все три правила перезаписи URL в ваш файл web.config. Похоже, что ваша среда изолирована, поэтому каждая среда будет соответствовать только одному из правил. Это может загромождать ваш web.config, но не ужасно.

Я бы пошел с вариантом 1. Вы можете найти информацию о преобразованиях конфигурации здесь: http://msdn.microsoft.com/en-us/library/dd465326.aspx

0 голосов
/ 05 марта 2015

Я бы также предложил вам другой вариант тестирования в локальной среде:

  1. Добавить в c: \ Windows \ System32 \ drivers \ etc \ hosts:

127.0.0.1 www.example.com

В IIS Manager выберите сайт и щелкните правой кнопкой мыши -> Изменить привязки .. -> Добавить ..

Введите имя хоста: www.example.com

Откройте cmd и выполните iisreset

Теперь вы можете использовать www.example.com в браузере, который сопоставлен с localhost

...