Мне нужно найти простой и универсальный способ поймать любую http://www.sub.example.com
URL-адреса и перенаправление их на http://sub.example.com
(т.е. удаление www)
Я бы предпочел реализовать это один раз для сервера, а не для каждого сайта, возможно, используя IIS Rewriter?
Вам нужно создать правило перенаправления в модуле перезаписи URL-адресов IIS следующим образом:
Соответствующий URL
Запрошенный URL: Matches the Pattern
С помощью: Regex
Шаблон: *
и Ignore case
Условия
Логическая группировка: Match Any
Вход: {HTTP_HOST}
Тип: соответствует узору узора: ^(www\.)(.*)$
Переменные сервера Оставьте поле пустым.
Действие Тип действия: Redirect
URL перенаправления: https://{C:2}{PATH_INFO}
Добавить строку запроса: checked
Тип перенаправления: Permanent (301)
Примените правило и запустите IISReset.
В качестве альтернативы, после установки модуля вы можете изменить web.config следующим образом:
<rewrite>
<rules>
<rule name="Strip www" enabled="true" patternSyntax="Regex" stopProcessing="true">
<match url="*" negate="false" />
<conditions logicalGrouping="MatchAny">
<add input=""{HTTP_HOST}" pattern="^(www\.)(.*)$" />
</conditions>
<action type="Redirect" url="https://{C:2}{PATH_INFO}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
Это правило предназначено для проверки любого URL (*), поиска экземпляра www. (по умолчанию без учета регистра) в {HTTP_HOST}, а затем перенаправить на вторую часть канонического имени хоста {C: 2} с добавлением остальной части пути в конце {PATH_INFO}. Это правило может не сработать, если был запрос на что-то вроде http://bad.www.example.com/some/page.html
как он вернется https://www.example.com/some/page.html
, но это должно работать в большинстве случаев.