基于接受标头和请求类型的IIS URL重写

时间:2015-11-18 14:22:10

标签: iis url-rewriting

我是否可以根据Accept-headers和请求类型使用IIS重写URL。

我需要IIS将以下条件的所有URL重写为index.html(有状态的js app):

  1. 请求是GET请求
  2. 来自客户的接受标头包括:" text / html"
  3. 不是直接文件请求。请求的路径不包含。 (DOT)角色
  4. 我认为它与Node模块相同:https://github.com/bripkens/connect-history-api-fallback

1 个答案:

答案 0 :(得分:0)

是的,你可以这样做,如果我正确地遵循你的要求,我相信你需要的URL重写规则如下。 基本上,

  1. 使用条件将HTTP_METHOD匹配为GET
  2. 使用条件匹配HTTP_ACCEPT以确保它以text / html开头,因为它们通常还包含编码和其他数据
  3. 确保它不是文件

        <rule name="Rewrite Text Requests">
            <match url=".*" />
            <conditions>
                <add input="{HTTP_METHOD}" pattern="^GET$" />
                <add input="{HTTP_ACCEPT}" pattern="^text/html" />
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            </conditions>
            <action type="Rewrite" url="/index.html" />
        </rule>