RedirectPermanent - MVC和短(呃)URL

时间:2016-12-21 00:03:09

标签: c# url asp.net-mvc

我使用域/控制器/操作的默认路由配置。

例如,www.domain / Appointment / RequestAppointment调用约会控制器和RequestAppointment ActionResult。

我们的营销人员经常要求我们为更短版本的网址构建重定向,以便在社交媒体或广告牌中使用。

因此,他们希望将www.domain/Appointment/RequestAppointment视为www.domain/appointment

我没有遇到过这样的问题,在这种情况下我只是:

//Appointment Controller
public ActionResult Index()
    {
        return RedirectToAction("RequestAppointment");
    }

现在,我们的搜索引擎优化人员告诉我新网址(www.domain / appointment)正在返回302重定向(我理解),这对SEO不利。他们想要301。

所以,我知道我可以通过使用:

返回(希望从SEO观点)301重定向
//Appointment Controller
public ActionResult Index()
    {
        return RedirectPermanent("http://www.domain.com/Appointment/RequestAppointment");

    }

它有效,但是有更好的方法或最佳实践来处理这个问题吗?我觉得它不常见,但我找不到任何东西。

我还必须对大约10个属于www.domain/controller/action/id格式的其他唯一网址执行相同操作,这些网址会重定向到www.domain/promotion

1 个答案:

答案 0 :(得分:2)

您无需为这些设置重定向。您可以将路由引擎设置为自动将给定URL映射到特定的控制器操作,即使它与给定的默认结构不匹配。请注意,这些需要 BEFORE 默认路由。你可以根据需要添加任意数量的这些,它们将返回200,甚至不是301。

routes.MapRoute("Request Appointment",
                "appointment", // <= What you want the URL after "www.domain" to be
                new { controller = "Appointment", action = "RequestAppointment" });

请记住,如果您想要进行索引操作,则需要将URL设置为“约会/索引”。但是,任何其他类型的映射都是如此。但是,您可以使用以下两个URL访问同一页面,而不会发生服务器或客户端重定向:

  

www.domain.com/appointment

     

www.domain.com/appointment/requestappointment