当建立一个多语种网站(与ASP.NET 网络的形式),我将使用HTTP模块改写该网址最终与一些友好(对人类和搜索引擎),如:

uk/products/product_category_one/sub_category_one/index.aspx
uk/products/product_category_one/sub_category_one/widget_mk5.aspx
es/productos/categoría_de_producto_una/widget_mk5.aspx

我(新)的理解的视是,网址应该采取的格式

控制器/行动/的标识符

所以复制的功能上与视最终会与类似的网址为:

products/category/123/product_category_one/sub_category_one
products/items/456/widget_mk5

问题..

  • 我可以插入一个国家代码进入URL前的'控制'部分?
  • 它是可能的地图产品"和"产品'相同的控制器吗?

谢谢你的帮助

编辑: 此外,Panos'回答下面我发现了更多的信息 ASP.NET 网站.

有帮助吗?

解决方案

该网址可以采取的几乎任何其他形式要你喜欢。更多的信息,检查 ASP.NET 视的框架(第2部分):URL路由.刚开始(因为我不知道如果这是最佳解决方案),可以添加两个新的路线,在全球性的。asax:

        routes.MapRoute(
            "ukRoute",
            "{lang}/Products/{action}/{id}/{subcategory}",
            new { lang = "uk", controller = "Products", action = "Index", id = "", subcategory = "" }
        );
        routes.MapRoute(
            "esRoute",
            "{lang}/Productos/{action}/{id}/{subcategory}",
            new { lang = "es", controller = "Products", action = "Index", id = "", subcategory = "" }
        );

这些路线的了解以下网址(和地图,他们两个的 ActionResult Category(string id, string subcategory) 方法 ProductsController):

uk/Products/Category/1/A
es/Productos/Category/1/A

如果你想要建立这种网址在你的看法你可以用这样的:

<%= Html.RouteLink("English 1.A", "ukRoute", new { lang = "uk", action = "Category", id = "1", subcategory = "A" })%>
<%= Html.RouteLink("Spanish 1.A", "esRoute", new { lang = "es", action = "Category", id = "1", subcategory = "A" })%>

其他提示

你可以这样做,但是请记住,并非所有国家的语言。例如,en-gb是通常表示为英国的英语,或者更具体地说,大不列颠区域对于英文的内容,例如。如果可以的话,它的价值以下的RFC1766衍生的公约,对于语言的区域。

搜索引擎,实际上往往做一个相当好的工作,处理与内容的谈判,通过这种方式,所以你不必一定拥有独立的Uri相同的内容在不同的语言。谷歌日本将爬与ja-JP作为接受的语言标题为例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top