Eu tive um problema semelhante e resolvi corrigi-lo criando duas regras
- 301 Redirecionar
padrão de pesquisa: ^ app $
URL de redirecionamento: app /
- reescrever
padrão de pesquisa: ^ app /(.*)
regravar URL: link {R: 1}
Eu tenho o IIS com os Rewrites de URL atuando como um proxy reverso para o Apache Tomcat.
example.com/app/ redireciona para example.com:8080/app/. A porta 80 redireciona para a porta 8080 no mesmo servidor.
Se eu for para example.com/app/, ele funcionará como esperado. No entanto, se eu for para example.com/app (sem a barra final), isso resultará em um erro 404.
O padrão que eu estou correspondendo para a regra de entrada é ^app/(.*)
. Em seguida, a ação é reescrita para o URL http://127.0.0.1:8080/app/{R:1}
.
Alguma sugestão sobre como fazer isso funcionar sem a barra final?
Eu tive um problema semelhante e resolvi corrigi-lo criando duas regras
padrão de pesquisa: ^ app $
URL de redirecionamento: app /
padrão de pesquisa: ^ app /(.*)
regravar URL: link {R: 1}
Para elaborar a resposta de Thomas, aqui está o arquivo de configuração depois que as regras foram criadas:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="ReverseProxyInboundRule2" stopProcessing="true">
<match url="^app$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Redirect" url="app/" />
</rule>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://localhost:8080/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Tags tomcat reverse-proxy rewrite iis