2

我在 URL 重写规则中遇到问题。我在 asp.net 网站中使用UrlRewritingNet.UrlRewriter Dll 进行 Url 重写。我使用规则名称作为“高级”和其他规则名称作为用于任何用户个人资料页面(即任何用户的个人资料页面)的 DefaultRule。当我将用户名输入为“ AdvancedMachinesTools ”时。
该规则如下:-

<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>

我收到错误消息“文件不存在”我最后在 web.config 文件中编写了 DefaultRule。

我是怎么解决的……?

已编辑

示例假设我的网站 url:www.abcd.com
1) 对于高级规则,我编写了如下www.abcd.com/advanced
规则的 URL:

<add name="advanced" virtualUrl="^~/advanced" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/advancedSearch.aspx" ignoreCase="true"  /> 

2) 对于假设用户名的默认用户规则:AdvancedEyecare 它使用默认规则

 <add name="DefaultRule" virtualUrl="^~/(.*)" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/UserProfile.aspx?uname=$1" ignoreCase="true"/>

当我输入像http://www.abcd.com/AdvancedEyecare这样的url 时
,我收到错误“文件不存在”,因为规则使用了 1 个高级规则,而不是使用用户默认规则。我想调用 userrule 而不是 1 个高级规则。怎么解决?

4

2 回答 2

1

$在第一个模式的末尾放置一个:

<add name="advanced" virtualUrl="^~/advanced$" destinationUrl="~/advancedSearch.aspx" />

只会匹配/advanced并将其重写为/advancedSearch.aspx

http://www.abcd.com/advanced -> http://www.abcd.com/advancedSearch.aspx

你想要的另一个重写是

http://www.abcd.com/AdvancedEyecare -> http://www.abcd.com/UserProfile.aspx?uname=AdvancedEyecare   
于 2011-03-07T06:26:33.187 回答
0

起初我会改变重写规则的顺序。

<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&amp;uname={R:1}" />
</rule>

尽管如此,为什么 OlewinskiGroup 会匹配到 "(.*)/Group" ?没有斜线

于 2011-02-24T07:02:07.153 回答