代码之家  ›  专栏  ›  技术社区  ›  Sunny Milenov

保留原始参数的ASP.NET 404(找不到页)重定向

  •  2
  • Sunny Milenov  · 技术社区  · 17 年前

    我正在用一个新的、结构不同的Web应用程序替换一个旧的Web应用程序。

    我无法更改新应用程序的虚拟目录路径,因为我的用户已将指向旧应用程序的不同链接加入书签。

    假设我有一个拥有此书签的用户:

    http://server/webapp/oldpage.aspx?data=somedata

    我的新应用程序将驻留在同一个虚拟目录中,替换旧的虚拟目录,但它不再具有oldpage.aspx,而是具有不同的布局,但它仍然需要来自旧URL的参数。

    所以,我设置了将404个错误重定向到redirectFromBookmark.aspx,在这里我决定如何处理请求。

    问题是,我收到的唯一参数是“aspxerrorpath=/webapp/oldpage.aspx”,而不是“data”参数,我需要它来正确处理请求。

    知道如何在404处理程序中获取完整的“原始”URL吗?

    编辑:阅读答案,看起来我没有把问题弄清楚:

    1. 用户已经为许多不同的页面(oldpage1、oldpage2等)添加了书签,我应该平等地处理它们。
    2. 每个旧页的参数几乎相同,我只需要一个特定的参数。
    3. 我想为“新”应用程序重新使用“旧”虚拟目录名。
    4. 搜索机器人等,不是一个问题,这是一个内部应用程序与动态内容,这是非常经常到期。

    问题是-我可以不在“新”应用程序中用旧名称和请求创建一堆空白页来完成这个操作吗?在它们的onload中重定向。也就是说,是否可以使用404机制,或者使用global.asax中的某些事件处理等来完成。

    4 回复  |  直到 17 年前
        1
  •  2
  •   John Rasch    17 年前

    你可以查一下 UrlRewritingNet 组件。

        2
  •  5
  •   Diodeus - James MacFarlane    17 年前

    为了搜索引擎优化,你应该 从未 404错误时重定向。404应该是一个死胡同,它提供了一些有用的信息,比如如何定位你要查找的页面,一个站点地图。

    你应该使用 301,永久移动 . 这允许搜索机器人更新其索引,而不会丢失分配给原始页面的页面排名,

    见: http://www.webconfs.com/how-to-redirect-a-webpage.php 关于如何对这种类型的响应进行编码。

        3
  •  1
  •   Astra    17 年前

    您还应该研究使用global.ascx(?)中的一些事件。扩展)用于检查错误和智能重定向的文件。OnError事件是您想要使用的。您将在该时间点(在httpContext对象下)拥有来自请求的变量,并且您可以让代码在那里工作,而不是404。如果你走这条路线,确保你正确地重定向404,除了oldpage.aspx。

    很抱歉,我现在没有任何明确的示例或信息,希望这能为您指明正确的方向。

        4
  •  0
  •   Igor Zelaya    17 年前

    POST和GET参数仅在每个请求中可用。如果您已经知道旧页的名称(old page.aspx),为什么不在其中添加一个自定义重定向呢?