Redirecionamento / regravação do IIS para o host para subdiretórios específicos

1

Como desenvolvedor, gostaria de redirecionar certas solicitações (AJAX) para um servidor DEV em vez de meu servidor local.

Por exemplo, a solicitação de redirecionamento para o subdiretório de "AbcService":

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

Eu não quero redirecionar outras solicitações de host local, por exemplo:

http://localhost/XyzService/...

Eu pensei que poderia fazer isso com a extensão IIS UrlRewrite 2.0, mas até agora não consegui criar uma regra que funciona.

Primeiro, não tenho certeza se preciso de uma ação de reconfiguração ou redirecionamento. Posso fazer com que a ação Redirecionar funcione, mas nenhum dado é retornado. Possivelmente, problemas de autenticação.

Aqui estão as regras:

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

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

Onde {C: 2} é o caminho que segue "/ AbcService /" da condição {URL}.

Uma coisa que não entendo é por que mudar isso de uma ação Redirecionar para Reescrever resulta em um erro 404, mesmo que eu tenha exatamente as mesmas condições.

    
por jimueller 16.04.2015 / 05:05

1 resposta

1

Algumas coisas:

Um rewrite deve ser usado se você quiser transferir para um URL diferente no mesmo site. O módulo de reescrita do IIS pode alterar internamente o URL solicitado e ele pode ser processado no mesmo pipeline de solicitação existente.

Um redirect é necessário quando você deseja transferir para um site diferente no mesmo servidor ou em um servidor diferente, que é o seu caso.

Ao usar um rewrite e também um URL absoluto, eu acho que o módulo tenta resolver isso dentro do site existente e não pode, então ele envia um 404.

As condições são adicionais ao URL correspondente, no seu caso você não precisa delas. Sua condição {HTTP_HOST} é sempre verdadeira, é sua dev-box local e o nome é resolvido para este site (a menos que você queira que ela se comporte de maneira diferente ao usar 127.0.0.1). A condição {URL} deve ser movida para o padrão:

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

A partida analisa tudo após o host slash (primeira barra após o nome do host)

Ao postar perguntas sobre a reconfiguração da URL aqui, é sempre uma boa ideia postar o XML no web.config

Tudo isso ainda não explica por que o seu método de redirecionamento não funciona? Talvez uma olhada no Fiddler possa ajudar.

    
por 16.04.2015 / 08:38

Tags