我刚开始将新的.NET 4.0 URL重写添加到我的项目中。我有一个问题。
假设我有一个Article.aspx显示文章。我在Global.asax中为它做了一条路线:
routes.MapPageRoute("article-browse", "article/{id}", "~/Article.aspx");
所以链接包含文章的id,显然,这不是一个非常好的,也不是SEO友好的链接。我想在链接中显示文章标题,而不是ID。
我是否必须在参数(而不是id)中传递整个标题,然后创建一个SQL查询来搜索具有匹配标题的数据库记录?这听起来很吓人。也许有一些方法可以做一些类似于Eval()方法的东西,这会把标题变成一个ID?
非常感谢!
答案 0 :(得分:5)
没有什么可以阻止您在链接中包含ID(用于快速SQL检索)和文章标题(用于SEO目的)。这很简单,stackoverflow如何处理路由(检查此问题的地址)。
routes.MapPageRoute("article-browse", "article/{id}/{title}", "~/Article.aspx");
显然,ID后面的标题不一定要显示页面(你只使用ID来获取文章),但是每当你在你的网站中生成链接时,用标题生成它,机器人就会使用在索引页面时。
哦,你可能还想创建一个方法,将你的标题翻译成一个URL友好的字符串。像所有小写一样,将空格和其他字符转换为' - '等。