我有一组执行此操作的ARR重定向/重写规则:
tfs
位于网址这是我的配置:
<rule name="TFS Redirect" enabled="true" stopProcessing="true">
<match url="^((?!tfs).)*$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="tfs.domain.com" />
</conditions>
<action type="Redirect" url="https://tfs.domain.com/tfs" appendQueryString="false" />
</rule>
<rule name="TFS Rewrite" enabled="true" stopProcessing="true">
<match url="^tfs(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://server3:8080/{R:0}" />
</rule>
问题是此设置与我的Let's Encrypt配置冲突。不知何故,我需要对除此URL之外的所有内容强制执行上述规则:
http://tfs.domain.com/.well-known/acme-challenge/*
这是驱动自动证书续订过程的传入远程质询的答案。但是,由于这些规则,ACME服务器无法访问本地IIS进行验证,并且证书未续订。
如何在抓住其他所有内容时允许这一个网址通过?有没有办法为条件添加例外?或者我应该完全删除这个条件,并完全依赖RegEx表达式吗?
答案 0 :(得分:0)
经过几个小时的RegEx fiddling,我想出了修复。
以下是新规则:
<rule name="TFS Redirect" enabled="true" stopProcessing="true">
<match url="^(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" pattern="^tfs\.domain\.com$" />
<add input="{URL}" pattern="^/\.well-known*" negate="true" />
</conditions>
<action type="Redirect" url="https://tfs.domain.com/tfs" appendQueryString="false" redirectType="Found" />
</rule>
我不想承认我不知道我早先的表达方式在哪里,但它是关闭的。我所要做的就是把它退回来,调整一下条件,一切都顺利通过。
此规则捕获并重定向这些请求:
tfs.domain.com
/.well-known
服务器变量中的{URL}
开头的仅供参考我在找到this后选择了302重定向。