1

嘿伙计们,就像标题所说的那样,我怎样才能尽可能简单地完成这种重写?是 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

感谢您的建议:)

4

3 回答 3

1

Scott Guthrie 对此有一篇很棒的文章。如果您运行的是 IIS7,那么使用URL Rewrite 模块非常容易。

于 2009-07-28T21:26:46.397 回答
0

Request.Url.ToString()

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

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

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

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

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

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

site.com/john/some_other_param

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

问候

于 2009-07-28T21:20:35.100 回答
0

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

http://www.urlrewriting.net

当然,如果您使用的是 IIS7,则内置路由可以执行此操作。

于 2009-07-28T21:29:52.647 回答