IIS 重写/应用程序请求路由 (ARR) 半工作
IIS Rewrite / Application Request Routing (ARR) Half-working
我的重写中有几条规则,包括已经工作了一年多的 ARR,现在几乎就像 web.config 文件中的顶级规则不再以正确的顺序调用。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="AuthRoute" stopProcessing="true">
<match url="(auth$|auth/(.*))" />
<action type="Rewrite" url="http://localhost:8083/auth/{R:2}" />
</rule>
...
<rule name="Non-File Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
如您所见,我有一个单独的 /auth
路由,它反向代理到为 /auth
中的所有内容设计的不同应用程序......在这种情况下,有几个文件 foo.HASH.css
和 foo.HASH.js
实际上在那里,后端应用程序正在为它们服务,但前端正在获取 /index.html
.
的父应用程序(通过 IIS)
一些文件被正确地反向代理,而另一些则没有。很奇怪,我不确定是 windows/iis 更新启动了这个还是什么。
事实证明,被反向代理的应用程序的内容并未使用路径前缀发布。由于浏览器未在列表中显示完整路径,因此遗漏了来自根目录的加载。
我的重写中有几条规则,包括已经工作了一年多的 ARR,现在几乎就像 web.config 文件中的顶级规则不再以正确的顺序调用。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="AuthRoute" stopProcessing="true">
<match url="(auth$|auth/(.*))" />
<action type="Rewrite" url="http://localhost:8083/auth/{R:2}" />
</rule>
...
<rule name="Non-File Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
如您所见,我有一个单独的 /auth
路由,它反向代理到为 /auth
中的所有内容设计的不同应用程序......在这种情况下,有几个文件 foo.HASH.css
和 foo.HASH.js
实际上在那里,后端应用程序正在为它们服务,但前端正在获取 /index.html
.
一些文件被正确地反向代理,而另一些则没有。很奇怪,我不确定是 windows/iis 更新启动了这个还是什么。
事实证明,被反向代理的应用程序的内容并未使用路径前缀发布。由于浏览器未在列表中显示完整路径,因此遗漏了来自根目录的加载。