我在这里发布了一个问题并回答了url is https://stackoverflow.com/a/42694565/6188148
这个人给了我一个IIS重写的代码片段,我不清楚它的意思。
<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} /{R:2}.aspx?lang={R:1} {R:1}
IIS如何理解{R:2}.aspx需要替换为home.aspx,以及{R:1}需要替换为国家代码。导致替换的逻辑是什么?
哪个国家名称应该存储在{R:2}模板中,哪个国家代码将存储在{R:1}中,这是什么逻辑
这是我的要求,如果有人熟悉这种规则,那么请在这里放一些光。谢谢
发布于 2017-03-09 23:01:21
您对match的搜索模式由两部分组成,这两部分由括号()中的模式识别。它可以与javascript中的regex相媲美。
([a-z]+)和([0-9a-z]+)
重写模块现在可以使用这两个作为action部分中的令牌来重写url。因为2位语言代码是分配给{R:1}的第一个匹配项,所以第二个是实际的页面,所以它成为第二个令牌{R:2}。
您可以将其与string.format函数的C#用法进行比较,在该函数中,标记被重载的字符串值替换。
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/
https://stackoverflow.com/questions/42695806
复制相似问题