我尝试在UrlRewrite中配置有两个条件的规则:
HTTP_HOST
需要匹配某个域(api.contoso.com)x-app-version
根据此信息,我想在后端重定向到不同版本的API。
问题
该规则在第一个条件下表现如预期。
当HTTP_HOST
与api.contoso.com匹配时,它会启动。
但是,它会忽略我的自定义x-app-version
标题。
假设
因此,我担心UrlRewrite条件只能与下拉列表中的有限预定义HTTP标头集合定义(HTTP_HOST
,REMOTE_ADDRESS
,REMOTE_HOST
,...)
问题 假设是正确的还是应该是可能的? 我的配置或其他方法是否存在基于自定义HTTP标头的条件的错误?
<rule name="ARR_test2" enabled="false">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="api.contoso.com" />
<add input="{x-app-version}" pattern="1" />
</conditions>
<action type="Rewrite" url="https://FARM_apiv1/{R:0}" />
</rule>
答案 0 :(得分:17)
好的,我发现了如何在UrlRewrite条件中使用自定义HTTP标头:
例如:为了检索我的自定义标题“x-app-version”,我可以使用“HTTP_x_app_version”。 所以我的UrlRewrite配置看起来应该是这样的
<rule name="ARR_test2" enabled="false">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="api.contoso.com" />
<add input="{HTTP_x_app_version}" pattern="1" />
</conditions>
<action type="Rewrite" url="https://FARM_apiv1/{R:0}" />
</rule>
实际上在文档中提到的很清楚: https://msdn.microsoft.com/en-us/library/ms524602(v=vs.90).aspx