我在这里发帖提问,回答网址是https://stackoverflow.com/a/42694565/6188148
这个人给了一个IIS重写的rile片段,其含义对我来说并不清楚。
<rule name="Rewrite language code">
<match url="^([a-z]+)/([0-9a-z]+).aspx" />
<action type="Rewrite" url="/{R:2}.aspx?lang={R:1}" />
</rule>
只是不明白这一行/{R:2}.aspx?lang={R:1}
是什么意思{R:2}和{R:1}
IIS如何理解{R:2}.aspx
需要替换为home.aspx
,{R:1}需要替换为国家/地区代码。是什么逻辑导致替换。
应该在{R:2}
模板中存储哪个国家/地区名称的逻辑,国家/地区代码将存储在{R:1}
我的要求是,如果有人熟悉这种规则,那么请在这里说清楚。感谢
答案 0 :(得分:0)
match
的搜索模式由两部分组成,由括号()
内的模式识别。它与javascript中的regex
相当。
([a-z]+)
和([0-9a-z]+)
重写模块现在可以使用这两个作为action
部分中的标记来重写网址。因为2位语言代码是第一个匹配,它被分配给{R:1}
,第二个是实际页面,因此它成为第二个标记{R:2}
。
您可以将此与C#
函数的string.format
用法进行比较,其中标记被重载的字符串值替换。
string token = "value";
Label1.Text = string.Format("Replace {0}.", token)
更多信息:
https://blogs.msdn.microsoft.com/chiranth/2014/06/12/url-rewrite-part-2inbound-rules/
http://ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/