[英]Rewriting custom tag attributes using IIS Url Rewrite 2.0 and ARR
我开发了一个自定义网格控件,它使用data-*
属性来配置网格应该如何工作(与Bootstrap数据API组件的工作方式类似。对于特定部署,我必须代理我的Web应用程序使用IIS和应用程序请求路由(ARR)+ URL重写进入另一个Web应用程序。代理部分全部完成,我正在尝试配置重写URL匹配的出站规则。例如,我目前有规则设置这样如:
Location:
标头重写HTTP重定向。 我遇到的最后一个问题是让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; table和data-zoom-image替换数据查询 “行动”
<rule name="RewriteRelativePathsCustomTags1" preCondition="IsHtml" enabled="true">
<match filterByTags="None" pattern="<img ([^>]*)data-zoom-image="(.*?)"([^>]*)>" />
<action type="Rewrite" value="<img {R:1}data-zoom-image="YOUR VALUE TO REWRITE i.e /blog{R:2}"{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.