用“ - ”符号重写URL以分割参数

时间:2016-11-07 13:18:06

标签: url-rewriting web-config

我目前的网址是:mysite.com/datasheet/100-DE-xmas2016-6

web.config中的

<rule name="myrule">
   <match url="^datasheet/([_0-9a-z-]+)-([_0-9a-z-]+)-([_0-9a-z-]+)" />
   <action type="Rewrite" url="ajax/datasheet.aspx?shop={R:1}&amp;language={R:2}&amp;product={R:3}" />
</rule>

不会重写

mysite.com/ajax/datasheet.aspx?shop_id=100&language=DE&product=xmas2016-6

为什么??? 如何使产品“xmas2016-6”工作? 列表“mysite.com/datasheet/100-DE-xmas20166”将起作用。但我真的想把产品用作“xmas2016-6”(在正则表达式中设置为[_0-9a-z-],但它在产品参数中忽略我的“ - ”符号或者是什么?)

1 个答案:

答案 0 :(得分:0)

此规则适用于您:

<rule name="myrule">
    <match url="^datasheet/([_0-9a-z]+)\-([_0-9A-Z]+)\-([_a-z]+[0-9]{4})([0-9]{1})$" />
    <action type="Rewrite" url="/ajax/datasheet.aspx?shop={R:1}&amp;language={R:2}&amp;product={R:3}-{R:4}" />
</rule>

正则表达式^datasheet/([_0-9a-z]+)\-([_0-9A-Z]+)\-([_a-z]+[0-9]{4})([0-9]{1})$datasheet/100-DE-xmas20166分为四组:

  • {R:0} datasheet/100-DE-xmas20166
  • {R:1} 100
  • {R:2} DE
  • {R:3} xmas2016
  • {R:4} 6