(图片来自:https://github.com/Bikeman868/UrlRewrite.Net)
1.Microsoft Rewrite
Using Rewrite Maps in URL Rewrite ModuleIn this walkthrough you will create two rewrite maps: one rewrite map will be used by rule that performs url rewriting, and another rewrite map will be used by rule that performs redirects to a different domain.两个演练,一个url重写,一个重定向到不同的domain
<rules> <rule name="Rewrite Rule"> <match url=".*" /> <conditions> <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" /> conditions> <action type="Rewrite" url="{C:1}" /> rule>rules>
可以参考:https://docs.microsoft.com/zh-cn/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference
UrlRewrite.NET是对官方提供的重写方案的替换,不是补充。
2.UrlRewrite.NET
https://github.com/Bikeman868/UrlRewrite.Net
New functionality这是相对重要的部分,它对Microsoft的Rewrite机制进行了扩展。。。
明确每个节点,及其对应的含义。
Solution文件夹中有对应的示例代码:
Syntax Reference 语法参考
rewrite
描述:document的根元素,这里的document所指是对应的xml配置文件
父节点:没有父节点
子节点:rules、rewriteMaps
规则:只能有一个rules子元素,所有的rewriteMaps的子节点必须在rules子节点的前面
rules
描述:rule元素列表的容器
name属性:仅用于追踪输出
stopProcessing属性:默认是true,通过设置成false,停止stopProcessing标志从当前列表内的规则传播到父规则
父节点:rewrite或者rule
子节点:rule和assembly
规则:assembly子节点必须放在rule子节点的前面。rule子节点引用程序集的自定义扩展。建议将assembly放在子节点的最上方
rewriteMaps
描述:rewriteMap元素列表的容器
父节点:rewrite
子节点:rewriteMap
规则:子节点必须有唯一的names属性
rewriteMap
描述:定义一个查找的字典,用起来像一个 大括号的扩展中函数。
name属性:name用于引用大括号中的映射
defaultValue属性:当在字典中没有匹配的条目的情况下, 返回的默认值
父节点:rewriteMaps
子节点:add