IIS Перенаправляет/Переписывает для Хостинга для Определенного Подкаталога

Как разработчик, я хотел бы перенаправить бесспорный запросы (Ajax) к серверу DEV, а не моему локальному веб-серверу.

Например, перенаправьте запрос на подкаталог "AbcService":

http://localhost/AbcService/json?queryString
http://dev.example.com/AbcService/json?queryString

Я не хочу перенаправлять другие запросы на localhost, например:

http://localhost/XyzService/...

Я думал, что мог сделать это с расширением IIS UrlRewrite 2.0, но к настоящему времени я не смог придумать правило, которое работает.

Во-первых, я не уверен, нужно ли мне действие Переписывания или Перенаправления. Я могу заставить действие Перенаправления работать, но никакие данные не возвращаются. Возможно проблемы аутентификации.

Вот правила:

URL: *
Conditions:
 {HTTP_HOST} matches "localhost"
 {URL} matches "*/AbcService/*

Action:
Redirect (307)
URL: http://dev.example.com/AbcService/{C:2}

Где {C:2} является путем после "/AbcService /" от {URL} условие.

Одна вещь, которую я не понимаю, состоит в том, почему, переключаясь это от Перенаправления для Перезаписи действия приводит к 404, даже при том, что у меня есть те же самые условия.

1
задан 16 April 2015 в 06:05
1 ответ

Несколько вещей:

Переписать следует, если вы хотите перейти на другой URL внутри одного и того же сайта. Модуль перезаписи IIS может изменить запрошенный url внутренне, и он может быть обработан в том же самом конвейере запросов.

redirect требуется, когда вы хотите перейти на другой сайт на том же или другом сервере, в вашем случае.

При использовании rewrite, а также абсолютного URL, я думаю, модуль пытается разрешить это в рамках существующего сайта и не может, поэтому посылает 404.

Условия являются дополнением к подходящему URL, в вашем случае они вам не нужны. Ваше условие {HTTP_HOST} всегда истинно, это ваш локальный dev-box и имя, разрешенное для этого сайта (если только вы не хотите, чтобы он вел себя по-другому при использовании 127.0.0.1). Условие {URL} должно быть перенесено в шаблон:

<rule name="ServerFault" patternSyntax="Wildcard" stopProcessing="true">
    <match url="AbcService/*" />
    <action type="Redirect" url="http://dev.example.com/AbcService/{R:1}" />
</rule> 

Матч смотрит на все после косая черта хоста (первая косая черта после имени хоста)

При размещении здесь вопросов Url Rewrite, это всегда хорошая идея для размещения XML из web.config

Все это до сих пор не объясняет, почему ваш метод редиректа не работает? Может быть, поможет просмотр Fiddler.

.
2
ответ дан 3 December 2019 в 20:55

Теги

Похожие вопросы