ASP.NET MVC的SEO URL

Gav*_*vin 5 asp.net-mvc seo routing

实施seo网址时是否有明确的DODONT?对于.html网站来说,很多好的做法似乎都很好,但在中型/大型数据库网站上却出现了问题.

AFAIK的网址应该是www.mysite.com/category/page-name-here

如果我希望创建一个内容丰富的站点并且默认类别和页面是数据库驱动的 - 这是否会阻止我将诸如www.mysite.com/aboutwww.mysite.com/home等页面作为about和主页可能发生冲突

虽然路由引擎很灵活,但上述可行和/或值得吗?

-编辑-

只是详细说明我的问题,是否可以用数据库控制路由引擎?

url包含有意义的描述是一种很好的做法 - 例如 stackoverflow.com/category/mvcstackoverflow.com/questions/seo-urls-with-asp-net-mvc是好的(而不是stackoverflow.com/category)/9955stackoverflow.com/questions/734583)

作为一个到期,我想把控制带到另一个层次,让我们说上面的两个控制器(类别和问题),每个显示动态数据可以修改为简单的 stackoverflow.com/mvcstackoverflow.com/seo- urls-with-asp-net-mvc.

我需要确保我的数据库包含一个表,告诉我前者将作为一个类别路由,后者作为一个问题 - 这可以通过简单的数据库查找来实现,并且需要在Global.asax中实现

我的问题是,这可以实现,潜在的陷阱是什么.

Gar*_*ler 8

如果将加密路由添加到通用路由之上,则很容易实现:

// 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" });
Run Code Online (Sandbox Code Playgroud)

如果你愿意的话,他们都可以使用相同的控制器,但如果他们使用不同的控制器,它可能会更容易一些.

你遇到的唯一问题就是如果你有一个名为"约"或"家"的类别,但我不太可能想象.

还应注意,您不必使用ASP.NET MVC来使用路由功能.


Eri*_*lje 5

为了避免你提到静态页面(关于,家庭等)的问题,你可以采取一些不同的方法:

  1. 将动态类别页面放在单独的路径中(例如www.mysite.com/shop/category/page-name-here)
  2. 将静态页面放在单独的路径中(例如www.mysite.com/pages/about).现在你不能有一个名为"pages"的类别,但所有其他类别都可以使用.
  3. 将静态路由放在动态路由之上.不理想,因为如果你的类别命名不佳,它可能会隐藏类别页面,但即使你做了#1或#2,你仍然希望这样做只是一个案例测量.

其他警告/陷阱:

  1. 您还需要确保您的类别名称和页面名称是唯一的.在一个大型网站上,这并不总是微不足道(甚至是实际的),这可能就是为什么你看到像Stack Overflow这样的URL,其中问题id实际上在URL中,而"页面名称"部分只是SEO糖.

  2. 您需要有一个处理名称更改的策略.如果更改了类别名称或页面名称,则需要有适当的位置将旧名称的链接重定向到新名称以获得最大的SEO优势.您还需要确保类别/页面的新名称与另一个类别/页面的旧名称不同,这会增加图片的复杂性.

总而言之,这是可行的,而且我认为这当然是值得的.特别是如果您希望您的大部分流量来自搜索引擎.