我使用域/控制器/操作的默认路由配置。
例如,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。
答案 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