gpt4 book ai didi

asp.net-mvc - 我可以避免这种永久重定向来修复或添加 slug 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:28:42 26 4
gpt4 key购买 nike

我正在用 MVC 4 编写一个网站,并且想部分复制 Stack Exchange 的路由问题样式。例如:

stackoverflow.com/questions/15191392
stackoverflow.com/questions/15191392/not-the-real-title
stackoverflow.com/questions/15191392/can-i-avoid-this-redirect-to-fix-or-add-a-slug

所有路由到同一个问题并更正 URL。我希望 slug 始终存在且正确,即使路由不需要它。

这是我当前的实现:

routes.MapRoute("Item", "{id}/{slug}/{action}",
new {controller = "Item", action = "Index", slug = UrlParameter.Optional},
new { id = @"\d+", slug = @"(?-i)[-a-z]*", action = @"(?-i)(|[A-Z][a-zA-Z]*)" });
routes.MapRoute("Default", "{controller}/{action}/{id}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional});

ItemController.cs 中:

public ActionResult Index(int id, string slug = null)
{
var item = GetItem(id);
var itemSlug = ToSlug(item.Title);
if (slug != itemSlug)
{
return RedirectToActionPermanent("Index", new {id, slug = itemSlug});
}
return View(item);
}

我担心的是 slug 错误/丢失时的重定向。此实现可能需要两倍的工作量(通过 ID 查询项目并 slug-ify 标题)来解析 View 。更糟糕的是,我需要为每个操作复制重定向代码。

关于代码重复、性能和 SEO 影响,我可以使用更好的实现吗?

最佳答案

只需为您的页面实现 rel="canonical"标签...无论如何这都很好,因为默认情况下谷歌将您的纯域和 www 版本视为 2 个不同的网站,但它会在这里帮助您,因为谷歌会理解所有重复项您可能会显示实际上是一个规范版本的所有副本(我会使用漂亮的 slug 格式),并且为任何副本构建的任何链接都将记入正确的漂亮网址,并且它们将显示在搜索结果页面

您可以在此处阅读有关标记及其实现的更多信息: http://support.google.com/webmasters/bin/answer.py?hl=en&answer=139394

关于asp.net-mvc - 我可以避免这种永久重定向来修复或添加 slug 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com