【问题标题】:Rewriting custom tag attributes using IIS Url Rewrite 2.0 and ARR使用 IIS Url Rewrite 2.0 和 ARR 重写自定义标记属性
【发布时间】:2013-05-16 08:59:20
【问题描述】:

我开发了一个自定义网格控件,它使用 data-* 属性来配置网格的工作方式(类似于 Bootstrap 数据 API 组件的工作方式。对于特定的部署,我必须代理我的 Web 应用程序使用 IIS 和应用程序请求路由 (ARR) + URL 重写进入另一个 Web 应用程序。代理部分已完成,我目前正在尝试配置出站规则以重写 url 以匹配。例如,我目前有规则设置如:

  • 通过更新 Location: 标头重写 HTTP 重定向。
  • 为标准标签(例如 A、Area、base 等)中的 URI 重写 Html 内容
  • 为相对的 URI 重写 Css 内容(例如 /cassette.axd -> /blog/cassette.axd)。

我遇到的最后一个问题是让 URL 重写模块在数据属性中接受我的 url,例如,如果我的网格是这样的:

<table data-grid data-query="/api/users/">

应该改写为

<table data-grid data-query="/blog/api/users/">

我强调所有其他标签,例如 &lt;a href&lt;img src 都按预期工作,甚至自定义 &lt;property value 标签也被正确重写。似乎只是通过hypenated属性。

我尝试添加一个&lt;customTags&gt; 部分,其中包含我的自定义标签:

<customTags>
    <tags name="Bootgrid">
        <tag name="table" attribute="data-query" />
        <tag name="table" attribute="data-update" />
        <!-- This next tag WORKS -->
        <tag name="property" attribute="value" />
    </tags>
</customTags>

但是,以上内容不匹配任何带有连字符的属性。不确定这是否真的可以解决,因为我在 IIS 配置中看不到任何东西来设置这些。

同样令人烦恼的是,一旦您在 IIS 中创建了一组自定义标签,您似乎就无法再次对其进行编辑。 :-/

【问题讨论】:

标签: iis url-rewriting custom-tags arr


【解决方案1】:

我遇到了同样的问题,而且似乎(尽管 Microsoft 未确认)IIS 无法处理包含 - 的自定义标记

对我有用的解决方法是使用另一个出站规则。在此示例中,我尝试替换 img 标记中的 data-zoom-image 属性(您需要将 <img 替换为 <tabledata-zoom-image 在“匹配”和“动作”中都带有 data-query

<rule name="RewriteRelativePathsCustomTags1" preCondition="IsHtml" enabled="true">
    <match filterByTags="None" pattern="&lt;img ([^>]*)data-zoom-image=&quot;(.*?)&quot;([^>]*)>" />
    <action type="Rewrite" value="&lt;img {R:1}data-zoom-image=&quotYOUR VALUE TO REWRITE i.e /blog{R:2}&quot;{R:3}>" />
</rule>
<preConditions>
    <preCondition name="IsHtml">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
    </preCondition>
</preConditions>

希望对你有帮助

【讨论】:

    【解决方案2】:

    IIS 上的 ARR 似乎对包含带有破折号 (-) 的属性的标签有问题。

    更新到 v3.0.1952 似乎已经解决了我的问题,但我仍在调查中。

    【讨论】:

    • 我的意思是 URL 重写 7.2.1952,而不是 ARR。
    【解决方案3】:

    有点晚了,但这是发布到 Web 版本 (2.0.1952) 中的 fixed back in 2015

    重要 - 此版本中的更改

    • Windows 10 和 Windows Server 2016 支持 - 现在可以使用此版本在 Windows 10 或 Windows Server 2016 上安装 URL Rewrite Module 2.0
    • 现在支持包含破折号的自定义属性。这是必需的,因为 HTML 5 具有以下确定 HTML 属性名称的规则:http://www.w3.org/TR/html-markup/syntax.html#syntax-attributes
    • 在 KB2974666 中包含 URL Rewrite 2.0(2014 年 6 月)的修补程序

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 2012-04-26
      相关资源
      最近更新 更多