SEO URLs with ASP.NET MVC

耗尽温柔 提交于 2019-12-04 07:04:38

It's easily feasible if you add the harcoded routes above the generic ones:

// AboutController.Index()
routes.MapRoute( 
    "About",
    "about",
    new { controller = "About", action = "Index" });

// HomeController.Index()
routes.MapRoute( 
    "Home",
    "home",
    new { controller = "Home", action = "Index" });

// ArticleController.Index(string category, string pagename)
routes.MapRoute( 
    "Article",
    "{category}/{pagename}",
    new { controller = "Article", action = "Index" });

They could all use the same controller if you wanted, but it might be a bit easier if they used separate ones.

The only problem you would have with this is if you had a category called "about" or "home" but this is unlikely I would imagine.

It should also be noted that you don't have to use ASP.NET MVC to use the routing capability.

To avoid the problems you mention with the static pages (about, home, etc.) you could take a few different aproaches:

  1. Put the dynamic category pages in a separate path (e.g. www.mysite.com/shop/category/page-name-here)
  2. Put the static pages in a separate path (e.g. www.mysite.com/pages/about). Now you can't have a category called "pages", but all other ones would work.
  3. Put the static routes above the dynamic routes. Not ideal since it could potentially hide category pages if you name your categories poorly, but even if you did #1 or #2, you would still want to do this as a just-in-case measure.

Other caveats/gotchas:

  1. You'll also need to ensure that your category names and page names are unique. On a large site this is not always trivial (or even practical) which is probably why you see URLs like the ones here on Stack Overflow where the question id is actually in the URL, and the "page name" part is just SEO sugar.

  2. You'll need to have a strategy for handling name changes. If a category name or page name is changed, you'll need to have something in place to redirect links to the old names to the new ones for maximum SEO goodness. You'll also want to make sure that the new name of a category/page isn't the same as the old name of another category/page, which adds a bit more complexity to the picture.

All that said, it is feasible, and it it certainly worthwhile in my opinion. Especially if you expect most of your traffic to come from search engines.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!