ASP.NET MVC - 将多个查询字符串参数映射到一个漂亮的URL

7 asp.net-mvc seo query-string

我对mvc的seo友好网址设计有点困惑 ....例如以下网址: http://myapp/venues/resturants.aspx?location = central&orderBy = top-rated

使用我的mvc应用程序,我将其映射如下: http:// myapp/venues/list/resturants/central/top-rated
{controller}/{action}/{category}/{location}/{order}

现在唯一的问题是位置和订单是可选的...因此应该可以提交如下请求:http:// myapp/venues/list/resturants/top-rated.当请求到达控制器动作时,这被证明是一个问题,位置参数自然地获得了"最高评级".

有什么建议?我正在考虑使用显式查询字符串来处理多个参数,但这确实是我的最后一个选项,因为我不想太多地牺牲SEO.

有没有人遇到过这种困境?你是怎么处理的?

提前致谢!

Tod*_*ith 14

点击您的个人资料链接,查看统计信息,近期,回复等网址.

例子:

没有排序它默认为统计数据

可选参数应该是查询参数


Gir*_*ffe 2

假设位置和订单的允许值是唯一的(即当它们进来时,您可以区分它们,否则如果它们只提供一个,您如何知道它是位置还是订单?),那么您可以只获取两个参数并计算出它们在控制器中的含义。

路线:{controller}/{action}/{param1}/{param2}

控制器动作:

public ActionResult MyAction(string param1, string param2)
{
    string location;
    string order;
    if (!ParseLocation(param1, out location))
    { ParseLocation(param2, out location); }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

不是特别优雅,但确实可以让您获得您想要的 URL。