12

我想为我的 ASP.NET MVC 网站实现一个 SEO 友好的 URL。

目前我有一个像这样的网址:

http://www.domain.com/product?id=productid

但现在我想重写我的网址,如:

http://www.domain.com/productname

所以请任何人都可以在上面帮助我......

4

5 回答 5

14

这是初学者的最佳文章-> SEO Friendly URls
该文章还解释了如何删除空格和破折号。

于 2013-02-28T07:00:31.373 回答
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
}
于 2013-02-28T07:25:41.950 回答
9

您可以通过这种方式将 Route 添加到您的 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

是 productname 不是标识符,不能用于唯一地查找记录。您需要在 url 中添加一个标识符。

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

于 2013-02-28T06:32:19.430 回答
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。

更多细节在这里

于 2013-02-28T06:38:33.530 回答
0

复制以下代码并将其粘贴进去。{ routes.MapRoute }

routes.MapRuote
{
   

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

}

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

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

我希望这会帮助你。

于 2021-08-03T06:43:42.983 回答