实现http:// site / NICK =>的重写HTTP://site/profile.aspx缺口= NICK?

时间:2009-07-28 21:03:31

标签: asp.net vb.net url-rewriting httphandler

嘿伙计们,就像标题所说,我怎样才能尽可能简单地完成这种重写呢?它是用httphandlers还是asp.net路由?我使用的是asp.net 3.5版本。

问题是我希望忽略任何其他请求,例如对.aspx文件,图像,文件夹等的请求,例如:

我想要处理这些内容:

site.com/john => site.com/profile.aspx?nick=john

site.com/mark => site.com/profile.aspx?nick=mark

site.com/fred => /site.com/profile.aspx?nick=fred

我不希望这些被处理:

site.com/page.aspx

site.com/images/logo.jpg

您的建议表示赞赏:)

3 个答案:

答案 0 :(得分:1)

斯科特格思里对此有一个great post。如果你正在运行IIS7,那么使用URL Rewrite module非常容易。

答案 1 :(得分:0)

Request.Url.ToString()

获取你的网址(如果我发现这个网页是正确的,我不经常使用asp.net)

你可以在这个URL上使用一些正则表达式,也许是某种......

site\.com/([\w])+$

不知道如何用.net读取正则表达式的捕获部分,必须有一个合适的对象。

然后向用户发送重定向,您应该能够使用适当的Redirect-HTTP-Header执行此操作。如果我是对的,那么在Response-Object中有一个类似命名的集合。

请注意,此实现不允许重写

site.com/john/some_other_param

如果您对如何详细实现这一点有疑问,我会尝试进一步研究

问候

答案 2 :(得分:0)

我过去曾使用过UrlRewriter.net来做到这一点。它工作得很好。如果没有映射到url的现有文件(即真正的aspx页面或图像文件),您可以将其配置为仅应用重写规则

http://www.urlrewriting.net

当然,如果你使用的是IIS7,那么内置路由就可以了。