.net - Intelligencia UrlRewriter with RegEx is not working -
i have following rewrite rule:
<rewrite url="^/membership/(.+)/(.+)/(.+)/(.+)" to="/membership/index.aspx?parentf=$3&f=$4"/>
which expecting should work url:
/membership/benefits/member-groups/sub-groups/motorcycle-live.aspx
however, in page rewritten url maps (/membership/index.aspx), retrieving filename
("f" in querystring) , parentfilename
("parentf" in querystring) use in query current page information.
- value of
filename
in casesub-groups,motorcycle-live.aspx
(when expectingmotorcycle-live.aspx
) - value of 'parentfilename' in case
member-groups
(when expecting 'sub-groups')
i have few other rewrite rules lower levels, example:
<rewrite url="^/membership/(.+)" to="/membership/index.aspx?f=$1"/> <rewrite url="^/membership/(.+)/(.+)" to="/membership/index.aspx?parentf=$1&f=$2"/> <rewrite url="^/membership/(.+)/(.+)/(.+)" to="/membership/index.aspx?parentf=$2&f=$3"/>
they work following example urls (respectively):
/membership/benefits.aspx /membership/benefits/member-groups.aspx /membership/benefits/member-groups/sub-groups.aspx
in these cases, filename
, parentfilename
values generated expected. '5th-level' page having problem.
what doing wrong?
edit
after removing of rewrite rules in web.config except one:
<rewrite url="^/membership/(.+)/(.+)/(.+)/(.+)" to="/membership/index.aspx?parentf=$3&f=$4"/>
i found worked on own. tried adding them in 1 one , changing order until worked. found following order of rules works:
<rewrite url="^/membership/(.+)" to="/membership/index.aspx?f=$1"/> <rewrite url="^/membership/(.+)/(.+)/(.+)/(.+)" to="/membership/index.aspx?parentf=$3&f=$4"/> <rewrite url="^/membership/(.+)/(.+)/(.+)" to="/membership/index.aspx?parentf=$2&f=$3"/> <rewrite url="^/membership/(.+)/(.+)" to="/membership/index.aspx?parentf=$1&f=$2"/>
so reversing order except have kept first rule in same position.
instead of posted rules, try this:
<rewrite url="^/membership/([^/]+)$" to="/membership/index.aspx?f=$1"/> <rewrite url="^/membership/([^/]+/)*([^/]+)/([^/]+)$" to="/membership/index.aspx?parentf=$2&f=$3"/>
this should avoid rule ambiguity, , has general rule arbitrary path depth.
Comments
Post a Comment