ASP.NET MVC SEO友好的URL

12

3
好的,我会尽力为您翻译。以下是您需要翻译的内容:http://ofps.oreilly.com/titles/9781449320317/ch_Routing.html - user1968030
5个回答

14
这是一篇适合初学者的最佳文章 -> SEO友好的URL
本文还解释了如何删除空格和破折号。

12
请尝试以下解决方案。在 global.asax.cs 中。
routes.MapRoute(
    "Product",
    "{productName}",
    new { controller = "Product", action = "Index" },
    new { productName = UrlParameter.Optional  }
);

但是您需要在productName中保持唯一性,并在产品控制器的索引操作中通过该字段获取记录 (即在产品控制器中:

public ActionResult index(string productName)
{
     //do something regarding get product by productname
}

9
您可以按照以下方式向MVC路由引擎添加路由:
在Global.asax.cs文件中:
routes.MapRoute(
    "Product",
    "{controller}/{productId}/{productName}",
    new { controller = "Product", action = "Index" },
    new { productId = UrlParameter.Optional , productName = UrlParameter.Optional  }
);

这将允许您拥有像

URL

这样的链接

www.domain.com/productid/productname

你能否实现这个目标,原因可能有很多。

www.domain.com/productname

产品名称不是唯一标识符,不能用于唯一查找记录。您需要在URL中使用标识符。

例如-查看SO中此问题的URL,它具有ID,然后附加SEO友好的文本。


0

复制以下代码并粘贴。{ routes.MapRoute }

routes.MapRuote
{
   

       name: "productname",
       routeTempalate: "services {controller}{aciton}{id}
       defaults: new (id = RouteParameter.Optionl;)

}

但是对于你来说,用你的要求替换"routeTemplate"。 对于你来说,它会像这样:

routeTemplate: "services{controller}/{productname}"

希望这能对你有所帮助。


0
在Global.asax中创建一个新的路由来处理这个问题:
    routes.MapRoute(
        "productId",                  // Route name
        "productId/{id}/{name}",      // URL with parameters
        new { controller = "Home", action = "productId", id = 1234, name = widget }  // Parameter defaults
    );

Asp.Net MVC 已经内置了路由,因此不需要 Url Rewriter。

更多详情在这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接