Назад | Перейти на главную страницу

Перенаправить URL-адреса www. * В IIS

Мне нужно найти простой и универсальный способ поймать любую 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, но это должно работать в большинстве случаев.