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

Перенаправление URL не работает в IIS 7.5

Я столкнулся с проблемой перенаправления моей веб-службы HTTPS с HTTP.

Я применил сертификат CA SSL к своему веб-сервису и, используя URL Rewrite, внес изменения для перенаправления в IIS 7.5.

Вот конфигурация, которую я получил в свой web.config:

<rule name="Redirect to HTTPS" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="^OFF$" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>

Но без снятия флажка Требовать SSL для моего веб-сервиса я не могу перенаправить с HTTP на HTTPS, где я получаю ошибку 403.4.

Когда я пытался добавить страницу ошибки с кодом 403.4, он не принимает ее и говорит, что мы не можем добавить код 403.3. Он принимает только 403, 404 и т. Д.

Флажок «Требовать SSL» - это именно то, что заставляет все обычные HTTP-запросы возвращать HTTP 403 обратно. Снятие флажка не «нарушает SSL» или что-то подобное, это просто позволяет IIS предоставлять ответ на HTTP-запросы.

Есть 2 подхода к этому:

  1. Снимите флажок "Требовать SSL" на веб-сайте и перезапишите все HTTP-запросы с помощью URL Rewrite.
  2. Не отключайте параметр «Требовать SSL».
    • Удалите с веб-сайта все привязки без HTTPS
    • Создайте новый фиктивный веб-сайт с привязками HTTP, которые вы удалили с настоящего веб-сайта.
    • Используйте URL Rewrite, чтобы перенаправить все запросы с фиктивного сайта на настоящий сайт через https

Первый подход проще всего реализовать и поддерживать, но второй вариант обеспечивает дополнительную защиту, поскольку IIS выдаст ошибку (вместо обслуживания не-http-контента), если модуль перезаписи URL-адреса выйдет из строя по какой-либо причине.