【发布时间】:2013-03-19 22:38:36
【问题描述】:
我在 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。
我是怎么解决的...?
已编辑
示例
假设我的网站网址:www.abcd.com
1) 对于高级规则,我写了这样的 URL www.abcd.com/advanced
规则:
<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这样的网址时
然后我收到错误“文件不存在”,因为规则使用了 1 条高级规则未使用用户默认规则。我想调用 userrule 而不是 1 个高级规则。
怎么解决?
【问题讨论】:
-
~/UserProfile.aspx存在吗?与之前的 Page1.aspx / Page2.aspx 方案相比,重写规则发生了巨大变化。 -
举一些你需要的(原始地址 -> 重写地址)对的例子。
-
嗨@tiagoinu ~/UserProfile.aspx 存在。
-
嗨@tiagoinu 原始文件“~/AdvancedSearch.aspx” 重写地址“^~/advanced”..
-
@Abhishek 您能否在您的问题中添加一些预期的重写示例?我的意思是完整的 URL,例如“
http://domain.com/abc/dce->http://domain.com/something?arg=else”。
标签: asp.net iis-7 url-rewriting urlrewriter.net