#asp.net-core #iis #url-rewriting
#asp.net-core #iis #url-перезапись
Вопрос:
Я пытаюсь создать правило перезаписи URL-адреса в IIS, которое перенаправляет пользователя на новую веб-страницу. Путь для правила представляет собой удаленный файл PDF, который содержался в виртуальном каталоге. У меня это правило работает на существующем сайте, но на нашем новом / обновленном веб-сайте используется.Net core — правило не работает (возвращает код состояния 404). Настройка виртуального каталога такая же — /pdf. Похоже, что правило полностью игнорируется, если это виртуальный каталог.
Website
│ New_Web_Page
└───pdf (virtual directory)
│ │ A_PDF_File.pdf
<rule name="PDF Redirect Rule" stopProcessing="true">
<match url="pdf/A_PDF_File.pdf" />
<action type="Redirect" url="New_Web_Page" redirectType="Permanent" />
</rule>
Комментарии:
1. если перезапись URL-адреса важна для вашего бизнеса, я думаю, вам следует попробовать делегировать эту задачу
asp.net core
промежуточному программному обеспечению. Полагаться наIIS
может быть знакомо вашей команде, но, конечно, это не гибко, например, когда ваше приложение необходимо развернуть с использованием другого типа хоста, например: .docker
Конечно, это немного отличается от того, что вы хотите в любом случае.IIS
2. К сожалению, на этом сайте есть несколько приложений. Другие веб-приложения имеют asp.net веб-формы и полагаются на функционирование некоторых из этих виртуальных каталогов. Наша цель — в конечном итоге устранить эти устаревшие приложения, когда у нас будет время их переписать (или включить их в новый сайт).
Ответ №1:
Размещение файла web.config в виртуальном каталоге с соответствующим правилом перезаписи устраняет проблему. Правило необходимо будет изменить, чтобы оно соответствовало размещению файла. Правило:
<rule name="PDF Redirect Rule" stopProcessing="true">
<match url="A_PDF_File.pdf" />
<action type="Redirect" url="/New_Web_Page" redirectType="Permanent" />
</rule>
И каталог теперь выглядит так:
Website
│ New_Web_Page
└───pdf (virtual directory)
│ │ A_PDF_File.pdf
│ │ web.config