【问题标题】:How to redirect a page that has moved?如何重定向已移动的页面?
【发布时间】:2014-02-24 18:49:18
【问题描述】:

我在一个 MVC asp.net 项目中有一个页面已经消失。我们已将 URL 重命名为完全不同的名称。

问题是其他网站仍然链接到该特定网址。

我们可以为有问题的 url 清空 html 并执行元刷新或 javascript 脚本调用以将它们带到新页面,但这并不真正适合我们的模型。

我可以添加另一条路由,让 asp.net 处理它,但是硬编码路由要转发的 url 似乎是不好的做法。我也可以编辑 asp.net 页面并使用 response.redirect,但没有真正的页面存在,因为这是一个轻量级的 CMS...

我应该如何使用最佳做法将用户从 url 登录页面重定向到不同的登录页面?作为要求的一部分,我们不需要用户看到“此页面已移动”或类似内容。

【问题讨论】:

  • 使用 URL Rewrite 2.0 和 IIS 重定向
  • 感谢您的回复。如果我无法控制 IIS 服务器怎么办?

标签: asp.net-mvc redirect


【解决方案1】:

您似乎需要返回 HTTP 301 status code,永久移动。 This answer 似乎概述了 asp.net MVC 中的一般方法。

例如:

public ActionResult Page()
{
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","http://example.com");
}

这将导致返回提到的 HTTP 301,搜索引擎和用户的浏览器将透明地跟踪它。

【讨论】:

  • SO 不推广链接仅答案,您提供参考很好。将一些内容复制到您的帖子中
  • 我实际上是在试用 Android 应用程序。事实证明,写答案、获取链接以及复制和粘贴内容是非常不可行的。
  • 阅读没问题,写纯文本以外的任何东西都是一场噩梦!
【解决方案2】:

301 重定向是最好的方法,因为它可以保留您在搜索引擎中的排名。 你可以用这个脚本来做:

注意将此代码放在脚本 runat="server" 标记之间。

private void Page_Load(object sender, System.EventArgs e) {
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","http://example.com");
}

【讨论】:

  • 它不是 APS.NET,所以没有 runat="server" 标签
  • 查看 Microsoft 的本指南。它有四种语言的代码 sn-ps:msdn.microsoft.com/en-us/library/dd322042(v=vs.100).aspx
  • 那么伙计,您能否在控制台 C# 应用程序中编写此代码。那行得通吗。只有语言不重要。你还需要了解框架
【解决方案3】:

如果您的旧 URL 是 ASP.NET MVC 操作,请使用 RedirectPermanent,它会向浏览器发送 HTTP 301(永久移动) 状态代码。

如果资源已被永久移动并且在之前的位置将不再可访问,请使用 RedirectPermanent。大多数浏览器会缓存这个响应并自动执行重定向,而无需再次请求原始资源。

public ActionResult MyAction()
{
    return RedirectPermanent("<new url>");
}

【讨论】:

  • 是的,这是一个很好的解决方案。稍微解释一下就好了
猜你喜欢
  • 2014-06-10
  • 2011-06-29
  • 1970-01-01
  • 2011-05-04
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多