IIS 反向代理失败,无尾部斜杠

IIS 反向代理失败,无尾部斜杠

我有带有 URL Rewrites 的 IIS,充当 Apache Tomcat 的反向代理。

example.com/app/ 重定向到 example.com:8080/app/。端口 80 重定向到同一服务器上的端口 8080。

如果我访问 example.com/app/,它会按预期工作。但是,如果我访问 example.com/app(没有尾部斜杠),则会导致 404 错误。

我为入站规则匹配的模式是^app/(.*)。然后操作重写为 URL http://127.0.0.1:8080/app/{R:1}

关于如何在没有尾部斜杠的情况下使其工作,有什么建议吗?

答案1

我遇到了类似的问题,并通过创建两个规则解决了该问题

  1. 301 重定向

搜索模式:^app$

重定向 URL:app/

  1. 改写

搜索模式:^app/(.*)

重写网址:http://127.0.0.1:8080/应用程序/{回复:1}

答案2

为了详细说明托马斯的回答,这是创建规则后的配置文件:

<?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>

答案3

我相信它可以与我用于类似问题的解决方案一起使用。对于你的情况,搜索模式将是:

^app(/?|/.*)$

重写 URL 为:

http://127.0.0.1:8080/app{R:1}

请注意,没有

相关内容