我有带有 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
我遇到了类似的问题,并通过创建两个规则解决了该问题
- 301 重定向
搜索模式:^app$
重定向 URL:app/
- 改写
搜索模式:^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}
请注意,没有