如何检查子文件夹中的文件以进行IIS重写?
在web.config中,用于重写的以下内容可以正常工作:如何检查子文件夹中的文件以进行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&
<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" />