【问题标题】:Asp.net MVC SEO Friendly URLAsp.net MVC SEO 友好 URL
【发布时间】:2013-02-14 05:53:52
【问题描述】:

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

目前我有一个类似的网址:

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

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

http://www.domain.com/productname

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

【问题讨论】:

标签: asp.net asp.net-mvc-3 url-rewriting asp.net-mvc-routing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    请尝试以下解决方案。在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
    }
    

    【讨论】:

      【解决方案3】:

      您可以通过这种方式将 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
      

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

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

      【讨论】:

        【解决方案4】:

        在 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。

        更多详情here

        【讨论】:

          【解决方案5】:

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

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

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

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

          希望对你有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-04-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-25
            • 2017-06-03
            • 1970-01-01
            • 2011-08-25
            相关资源
            最近更新 更多