Мне нужно найти простой и универсальный способ перехвата любых http://www.sub.example.com
URL-адресов и перенаправления их на http: // sub .example.com
(то есть удаление www)
I ' Я предпочитаю реализовывать это один раз для сервера, а не для каждого сайта, возможно, с помощью IIS Rewriter?
Вы захотите создать правило перенаправления в модуле перезаписи URL-адресов IIS следующим образом:
Сопоставить URL-адрес
Запрошенный URL-адрес: Соответствует шаблону
Использование: Регулярное выражение
Шаблон: *
и Игнорировать регистр
Условия
Логическая группировка: Соответствовать любому
Вход: {HTTP_HOST}
Тип: соответствует шаблону
Шаблон: ^ (www \.) (. *) $
Переменные сервера Оставьте поле пустым.
Действие
Тип действия: Перенаправление
URL перенаправления: https: // {C: 2} {PATH_INFO}
Добавить строку запроса: проверено
Тип перенаправления: Постоянное ( 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
, но он должен работать в большинстве случаев.