When building a multi-lingual website (with ASP.NET web forms), I’ll use an HTTP module to rewrite the URLs to end up with something friendly (for humans & search engines) like:
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
My (newbie) understanding of MVC is that the URL should take the format of
Controller / Action / Identifier
so replicating the functionality above with MVC will end up with URLs similar to:
products/category/123/product_category_one/sub_category_one products/items/456/widget_mk5
Questions..
- Can I insert a country code into the URL before the ‘controller’ segment?
- Is it possible to map ‘products’ and ‘productos’ to the same controller?
Thanks for your help
Edit: In addition to Panos’ answer below I found more information on the ASP.NET Website.
The URL can take almost any other form you like. For more info, check ASP.NET MVC Framework (Part 2): URL Routing. Just for starting (since I am not sure if it is the optimum solution), you can add two new routes in your global.asax:
These routes understand the following URLs (and map both of them to the
ActionResult Category(string id, string subcategory)method ofProductsController):If you want to create such URLs in your views you can use something like: