2

这就是场景:我有一个大约 5000 个 URL 的列表,这些 URL 已经发布给不同的客户。现在,所有这些 URL 的位置在我的服务器端都发生了变化。服务器还是一样的。这是一个 .NET3.5/C# 的 ASP.NET 网站。

我的要求是:尽管客户使用旧的源 URL,但他们应该被重定向到新的 URL,而没有任何感知的更改或中间重定向消息等。

我试图理解整个场景:

  1. 我会将旧 URL 到新 URL 的实际映射放在哪里——在数据库或某些配置中。文件还是有更好的选择?

  2. 我将如何实际实现重定向:
    我应该使用 Server.Transfer 或 Response.Redirect 编写方法吗?
    是否有最佳实践 - 将实际的重新路由放置在 HTTPModules 中......或者它是 Application_BeginRequest?

我希望通过符合最佳实践的方法和非常低的性能下降(如果有的话)来实现。

4

3 回答 3

2

如果您的应用程序已经使用数据库,那么我会使用它。将旧 URL 设为主键,查找速度应该非常快。我会亲自将整个东西包装在抽象它的 .NET 类中,并允许您创建Dictionary<string,string>所有 URL,这些 URL 可以从数据库加载到内存中并缓存。这将更快。

绝对不要使用Server.Transfer. 相反,您应该执行301 Permanently Moved重定向。这将使搜索引擎知道使用新的 URL。如果您使用的是 NET 4.0,则可以使用HttpResponse.RedirectPermanent方法。但是,在早期版本中,您必须自己设置标题 - 但这是微不足道的

于 2010-07-30T19:01:46.563 回答
0

将数据保存在数据库中,但加载到 ASP.NET 缓存中以减少访问时间。

于 2010-07-30T19:06:15.303 回答
0

你肯定想使用 HTTPModules。这是公认的做法,并且最近尝试在 Global.asax 中执行此操作,我可以告诉您,除非您只想做最简单的事情(即"~/mypage.aspx/3" <-> "~/mypage.aspx?param1=3),否则它比看起来更复杂和错误。

事实上,我什至后悔尝试推出自己的 URL 重写解决方案。如果您想要可以依赖的东西,那是不值得的。Scott Guthrie 有一篇关于该主题的非常好的博客文章,他推荐UrlRewriter.netUrlRewriting.net作为两个免费的开源 URL 重写解决方案。

祝你好运。

于 2010-07-30T19:39:41.150 回答