Reputation: 5202
I am getting problem in URL rewrite rules.
I am used UrlRewritingNet.UrlRewriter Dll for Url rewriting in asp.net website.
I used rules name as "Advanced"
& Other rule name as DefaultRule that is used for any user profile page(ie. any user's profile page).
When I entered username as "AdvancedMachinesTools".
That Rules as below:-
<urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage="Login" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
<rewrites>
<add name="advanced" virtualUrl="^~/advanced" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/advancedSearch.aspx" ignoreCase="true" />
<add name="DefaultRule" virtualUrl="^~/(.*)" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/UserProfile.aspx?uname=$1" ignoreCase="true"/>
</rewrites>
</urlrewritingnet>
I got error message "File does not exist" I wrote DefaultRule at last in web.config file.
How I resolved it...?
EDITED
Examples
Suppose that my website url: www.abcd.com
1) For advanced rule I wrote URL like this www.abcd.com/advanced
Rule:
<add name="advanced" virtualUrl="^~/advanced" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/advancedSearch.aspx" ignoreCase="true" />
2) for Default user rule for suppose username: AdvancedEyecare it used default rule
<add name="DefaultRule" virtualUrl="^~/(.*)" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/UserProfile.aspx?uname=$1" ignoreCase="true"/>
When I enter url like http://www.abcd.com/AdvancedEyecare
Then I got error "File not exist" because Rule used 1 advanced rule not used user default rule. I want to call userrule instead of 1 advanced rule.
How can solve it?
Upvotes: 2
Views: 1903
Reputation: 3461
Put an $
at the end of the first pattern:
<add name="advanced" virtualUrl="^~/advanced$" destinationUrl="~/advancedSearch.aspx" />
This will only match /advanced
and rewrite it to /advancedSearch.aspx
:
http://www.abcd.com/advanced -> http://www.abcd.com/advancedSearch.aspx
The other rewrite you want is
http://www.abcd.com/AdvancedEyecare -> http://www.abcd.com/UserProfile.aspx?uname=AdvancedEyecare
Upvotes: 1
Reputation: 19365
At first I would change the order of the rewrite rules.
<rule name="GroupDefaultRule">
<match url="Group" />
<action type="Rewrite" url="Page2.aspx?action=group" />
</rule>
<rule name="Group1Rule">
<match url="(.*)/Group" />
<action type="Rewrite" url="page1.aspx?action=group&uname={R:1}" />
</rule>
Nevertheless, why would OlewinskiGroup be matched into "(.*)/Group" ? There is no slash present
Upvotes: 0