如何检查子文件夹中的文件以进行IIS重写?

如何检查子文件夹中的文件以进行IIS重写?,iis,url-rewriting,web-config,Iis,Url Rewriting,Web Config,在web.config中,用于重写的以下内容可以正常工作: <rule name="foo" stopProcessing="true"> <match url="foo.dat$"/> <conditions> <!-- Match brotli requests --> <add input="{HTTP_ACCEPT_ENCODING}" pattern="br" /> </conditions&

在web.config中,用于重写的以下内容可以正常工作

<rule name="foo" stopProcessing="true">
  <match url="foo.dat$"/>
  <conditions>
    <!-- Match brotli requests -->
    <add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
  </conditions>
  <action type="Rewrite" url="_compressed_br/foo.dat" />
</rule>

Web app foo的目录是…\dist。 打开web应用程序的URL为:

编辑(2019-09-30):

编辑(2019-10-01):

对于上述问题,公认的答案很有魅力

我有一个新的挑战。 如果我将web文件放在以下目录中: C:\mywebsite\home\dist\web.config

该网站绑定到端口8086。我可以浏览以下网页:

为了使重写工作正常进行,我必须使用以下方法:

 <add input="{APPL_PHYSICAL_PATH}home\dist\_compressed_br\foo.dat" matchType="IsFile" negate="false" />

由于我可能会将内容放在文件夹dist下,并在任何目录中使用相应的web.config,因此我想知道是否有一个参数可以替换“{APPL_PHYSICAL_PATH}home\dist”,以便无论将它们放在何处,我都可以使用相同的web.config

您可以使用
{APPL\u PHYSICAL\u PATH}
查找Web应用程序
foo
的根文件夹

设置响应头
Content Encoding:br
可能还需要防止意外行为,例如
foo.dat
的文件下载对话框,而不是显示其解码的响应

因此,以下是您需要的规则:



您可以尝试匹配如下内容:它将返回/s2。@JanviPanchal感谢您的帮助。我完全按照你写的做了,但没有用。我也尝试过没有第一个正斜杠:,它也失败了。测试url是:“localhost/mywebapp/”实际上,我可以下载带有“localhost/mywebapp/_compressed\u br/foo.dat”的foo.dat,所以你的建议应该是有效的。我发现某个地方的URL需要以某种方式转换为文件路径。您可以共享您的文件夹结构和测试URL吗?并尝试使用失败的请求跟踪来获取规则不起作用的更多详细信息。您可以通过使用url重写来参考此链接,了解如何检查文件是否存在@JalpaPanchal我根据你的要求添加了信息。我启用了失败的请求跟踪,但在日志中没有看到任何内容。我怀疑这不是一个失败的请求。再次感谢您的帮助。如果你不介意的话,我想知道你是否可以再次伸出你能干的手。因为很难在这里的评论中描述它,我在原始问题后面附加了新的挑战。你能看一下吗?如果您认为最好再提出一个问题,我很乐意这样做。@Hong通过回答,我建议您提出一个新的后续问题,并提供更多详细信息,即网站根目录,web应用程序的根目录等。此外,可能还有更好的解决方案,例如一个HTTP模块文件,而不是几个
web.config
s。谢谢。明天就可以了。这里是深夜。我在这里发布了新问题:
<add input="{DOCUMENT_ROOT}_compressed_br/foo.dat" matchType="IsFile" negate="false" />
<add input="/_compressed_br/foo.dat" matchType="IsFile" negate="false" />
<add input="_compressed_br/foo.dat" matchType="IsFile" negate="false" />
 <add input="{APPL_PHYSICAL_PATH}home\dist\_compressed_br\foo.dat" matchType="IsFile" negate="false" />