繁体   English   中英

使用IIS Url Rewrite 2.0和ARR重写自定义标记属性

[英]Rewriting custom tag attributes using IIS Url Rewrite 2.0 and ARR

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

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

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

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

应改写为

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

我强调所有其他标记,例如<a href<img src按预期工作,甚至自定义<property value标记也被正确重写。 似乎只是通过夸大的属性。

我尝试添加<customTags>部分,我的自定义标记位于:

<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中创建了一组自定义标签,你似乎无法再次编辑它们。 : - /

我有同样的问题,它似乎(虽然没有得到Microsoft确认)IIS无法处理包含 - 的自定义标记 -

解决这个问题的方法是使用另一个出站规则。 在这个例子中,我试图替换img标记中的data-zoom-image属性(你需要在“匹配”和“匹配”中用&lt; img&lt; tabledata-zoom-image替换数据查询 “行动”

<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>

希望这可以帮助

IIS上的ARR似乎存在标记问题,其中包含带有短划线( - )的属性。

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

相反,但这在2015年的Release To Web版本(2.0.1952)中得到了修复:

重要信息 - 此版本中的更改

  • 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
  • 包含URL Rewrite 2.0的修补程序(2014年6月),如KB2974666所示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM