ASP.Net WebForm:寻找理解IIS重写规则的指南

时间:2017-03-09 12:47:46

标签: asp.net iis url-rewrite-module

我在这里发帖提问,回答网址是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}

我的要求是,如果有人熟悉这种规则,那么请在这里说清楚。感谢

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/

https://besthostingforasp.net/url-rewrite-module-iis/