HTTP Redirect или URL Rewrite (IIS)

В меню IIS у вас есть HTTP Redirect и URL Rewrite. Последний затем имеет действие перезаписи и действие перенаправления. Мне интересно, в чем разница между всеми этими.

1 ответ

Решение

HTTP redirect - это модуль, который выполняет HTTP-перенаправление, которое представляет собой ответ уровня 300 с заголовком Location. Браузеры читают этот 300-уровневый ответ, анализируют заголовок Location и перенаправляют на указанный адрес. Визуально мы видим изменение адреса браузера.

Тип действия перенаправления URL-адреса совпадает с типом перенаправления HTTP с точки зрения конечного результата. Однако с перезаписью URL мы можем создать более сложные правила перенаправления, чем то, что я смог сделать с перенаправлением HTTP.

Перезапись URL-адреса приводит к тому, что URL-адрес перезаписывается на другие значения до запуска многих модулей. Это приводит к тому, что выполнение будет выполняться на основе измененного URL-адреса вместо исходного. Это полностью серверная сторона, поэтому браузер в конце получает ответ HTTP. Если ответы не являются ответом уровня 300, мы даже не увидим изменение URL в браузере.

Переписать пример

Допустим, у вас есть страница веб-форм ASP.NET, на которой есть страница /Users.aspx?id=3 для поиска информации о пользователе 3. Мы создали бы правило, которое соответствует ^users/(\d+)$, и переписали бы это правило в /user.aspx?id= enjR:1}. Это приводит к тому, что URL-адрес, такой как Jarrod Dixon, обрабатывается внутренне как http://server/users.aspx?id=3. Браузер не увидит изменения адреса.

Тот же пример с перенаправлением

Если правило выше было правилом перенаправления. URL /users/3 вызовет ответ на уровне 300 с заголовком Location, установленным в /users.apsx?id=3, и браузер перейдет на эту страницу. Мы бы увидели адрес браузера по адресу http://server/users.aspx?id=3

Другие вопросы по тегам