【问题标题】:Creating Special SEO Route in MVC在 MVC 中创建特殊的 SEO 路由
【发布时间】:2012-07-27 14:11:41
【问题描述】:

我有以下实体:

公司 -> 博客 -> 文章 -> 评论

每家公司都有一个博客(或多个博客),里面有文章和 cmets。

网址是这样创建的:

{controller}/{Action}/{id}

博客/编辑/1

出于 SEO 的目的,我想把公司放在前面,这样更合乎逻辑:

SampleCo/博客/编辑

SampleCo 也可能有一个网站,其页面如下:

SampleCo/myPage.vbhtml

解决这个问题的最佳方法是什么?感谢您的帮助。

注意:我已经看到有关多租户的链接,但我认为不需要。我不需要单独的实例,因为一切都是外键的(公司到博客,博客到文章,文章到 cmets)。

【问题讨论】:

    标签: asp.net-mvc vb.net asp.net-mvc-3 asp.net-mvc-routing


    【解决方案1】:

    在 global.asax.cs 中你应该可以用这个替换默认路由:

            routes.MapRoute(
                "Default", // Route name
                "{company}/{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
    

    唯一的问题是这适用于所有请求,因此如果您使用/需要站点其他部分的默认路由,则必须找到另一个解决方案。

    在您的控制器中,您将拥有:

    public class BlogController : Controller {
        public ActionResult Edit(String company, int id) {
        }
    }
    

    【讨论】:

    • 通过使用路由约束来确保 {company} 是有效的公司(文本或 id)并且 {controller} 是有效的控制器并且 {action} 是对该控制器的有效操作,您可以轻松使路由仅适用于某些请求。
    【解决方案2】:

    相信我你不想乱用默认路由,这会让你头疼,你可以保留默认路由,并创建一个辅助路由,例如:

     routes.MapRoute(
                    "Default", // Route name
                    "{controller}/{action}/{id}", // URL with parameters
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
                );
    
        routes.MapRoute(
                    "SEORoute1", // Route name
                    "{company}/{controller}/{action}/{id}", // URL with parameters
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
                );
    

    当你需要使用路由时,只需使用这个助手:

    @Html.RouteLink("LinkText","SEORoute1",new { action = "Index", controller = "Home", company = item.Name, id = item.Code })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 2011-03-08
      • 2011-04-06
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 2012-04-24
      相关资源
      最近更新 更多