URL重写组合查询字符串值

时间:2012-11-06 09:56:42

标签: c# asp.net regex url-rewriting

我有以下网址重写规则:

<ConfigRule>
     <LookFor>/([^/]*)/([^/]*)/([^/]*)/</LookFor>
     <Exclude>/Admin/(.*)</Exclude>
     <SendTo>~/CategoryDetails.aspx?url=$3&amp;fullurl=/$1/$2/$3/&amp;page=1</SendTo>
     <IgnoreQueryStringInMatch>true</IgnoreQueryStringInMatch>
</ConfigRule>

其中$ 1,$ 2和$ 3分别等于父组,父类别和类别。我要做的是匹配一个URL,例如:/cars/car-parts/wheels/

正则表达式与url模式匹配,但我有一个奇怪的问题,如果你有一个具有相同名称的类别,例如两个名称为/ url“wheels”,无论是否在不同的父/组下,您都将被重定向到两个中的一个,例如。

/bicycles/bicycle-parts/wheels/

/cars/car-parts/wheels/

两者都会重定向到同一页面。

我相信罪魁祸首就是这样:

<SendTo>~/CategoryDetails.aspx?url=$3&amp;fullurl=/$1/$2/$3/&amp;page=1</SendTo>

?url=$3只匹配url(wheel)的最后一部分,所以我想我要问的是有没有办法在url querystring中包含group + parent + category以便它匹配所有三个段而不仅仅是结尾?

1 个答案:

答案 0 :(得分:1)

我想你想要的是在生成你的页面的ASP脚本中使用 fullurl 参数而不是 url (CategoryDe​​tails.aspx)。包含所有三个层次结构级别的完整路径已经传递到重写的URL中,因此在这里使用url重写没什么可做的。