我想要一个正则表达式字符串来反映一个可选参数,在本例中是一个地理状态。
我可以通过两条规则来实现这一目标:
<rewrite url="~/(.+)-(.+)/(.+).aspx" to="~/Default.aspx?city=$1&state=$2&term=$3&x=$4"/>
<rewrite url="~/(.+)/(.+).aspx" to="~/Default.aspx?city=$1&state=NONE&term=$2&x=$4"/>
对/Los+Angeles/cars.aspx的查询: 地理 - 城市:洛杉矶 地理位置:无:
对/Los+Angeles-CA/cars.aspx的查询: 地理 - 城市:洛杉矶 地理位置:CA
我很好奇是否有办法在一个重写语句中执行此操作。
感谢。
答案 0 :(得分:1)
在一段时间内没有在配置中搞乱重写url,但我很习惯正则表达式。这对你有用吗?
<rewrite url="~/([^-]+)(?:-(.+))?/(.+).aspx" to="~/Default.aspx?city=$1&state=$2&term=$3&x=$4"/>
国家不会说没有,但实际上应该是空白。
答案 1 :(得分:0)
您是否愿意将空字符串而不是NONE传递给state参数?如果是这样,您的第一条规则可以像这样重写:
~/(.+)-?(.+)/(.+).aspx
......你的第二个可能会被删除。