我目前正在开发一个小型的ASP.NET MVC项目.该项目几个月前发布.但是现在应该针对可用性和SEO原因实施更改.我决定使用属性路由来创建干净的URL.
目前,产品页面通过以下方式调用:
hostname.tld /控制器/ GetArticle/1234
我定义了一个像这样的新Route:
[Route("Shop/Article/{id:int}/{title?}", Name = "GetArticle", Order = 0)]
public ActionResult GetArticle(int id, string title = null) {
// Logic
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但由于向后兼容性和SEO原因,旧的路线应该仍然可用.并使用HTTP状态代码301重定向到新URL.
我听说可以为一个动作分配多个路径,如下所示:
[Route("Shop/Article/{id:int}/{title?}", Name = "GetArticle", Order = 0)]
[Route("Controller/GetArticle/{id:int}", Name = "GetArticle_Old", Order = 1)]
public ActionResult GetArticle(int id, string title = null) {
// Logic
}
Run Code Online (Sandbox Code Playgroud)
但我不知道这是一个很好的解决方案,或者如何确定调用哪条路线?