URL重写 - 可选参数?

时间:2011-03-22 19:59:46

标签: regex web-config url-rewriting optional-parameters

我想要一个正则表达式字符串来反映一个可选参数,在本例中是一个地理状态。

我可以通过两条规则来实现这一目标:

<rewrite url="~/(.+)-(.+)/(.+).aspx" to="~/Default.aspx?city=$1&amp;state=$2&amp;term=$3&amp;x=$4"/>
<rewrite url="~/(.+)/(.+).aspx" to="~/Default.aspx?city=$1&amp;state=NONE&amp;term=$2&amp;x=$4"/>

对/Los+Angeles/cars.aspx的查询: 地理 - 城市:洛杉矶 地理位置:无:

对/Los+Angeles-CA/cars.aspx的查询: 地理 - 城市:洛杉矶 地理位置:CA

我很好奇是否有办法在一个重写语句中执行此操作。

感谢。

2 个答案:

答案 0 :(得分:1)

在一段时间内没有在配置中搞乱重写url,但我很习惯正则表达式。这对你有用吗?

<rewrite url="~/([^-]+)(?:-(.+))?/(.+).aspx" to="~/Default.aspx?city=$1&amp;state=$2&amp;term=$3&amp;x=$4"/>

国家不会说没有,但实际上应该是空白。

答案 1 :(得分:0)

您是否愿意将空字符串而不是NONE传递给state参数?如果是这样,您的第一条规则可以像这样重写:

~/(.+)-?(.+)/(.+).aspx

......你的第二个可能会被删除。