我正在熟悉ASP.Net-MVC,我正在尝试完成一些我过去使用webforms和其他功能完成的常见任务。我需要做的最常见的任务之一是创建SEO友好的url,这在过去意味着要做一些url重写来将查询字符串构建到目录路径中。
例如: www.somesite.com/productid/1234/widget
而非: www.somesite.com?productid=1234&name=widget
在ASP.Net-MVC中,我应该使用什么方法来完成此任务?
我到处搜索,我找到的只是这个,要么我没有正确理解,要么没有真正回答我的问题:
发布于 2009-08-25 02:28:51
在Global.asax中创建一个新路由来处理此问题:
routes.MapRoute(
"productId", // Route name
"productId/{id}/{name}", // URL with parameters
new { controller = "Home", action = "productId", id = 1234, name = widget } // Parameter defaults
);Url有内置的路由,所以不需要Asp.Net重写器。
发布于 2009-08-25 02:12:24
MVC代表“模型-视图-控制器”,虽然这些概念不是你想要的,但你通常可以很容易地把上面看到的URL连接起来
例如,默认情况下,URL如下所示
http://www.somesite.com/controller/view/其中controller指的是项目中的控制器类,view指的是控制器中的页面/方法组合。因此,例如,您可以编写视图来接受输入,如下所示
http://www.somesite.com/widget/productid/1234/现在对于搜索引擎优化友好的网址,那只是无用的糖。您可以编写控制器,以便在URL的末尾添加无害的cruft。
因此,例如,您将注意到以下三种解决此问题的方法会产生相同的结果:
How do I create SEO-Friendly urls in ASP.Net-MVC
How do I create SEO-Friendly urls in ASP.Net-MVC
How do I create SEO-Friendly urls in ASP.Net-MVC
堆栈溢出已经编写了它们的路由值,因此问题ID之后出现的位实际上不是必须的。
那么为什么要把它放在那里呢?来增加Google PageRank。谷歌PageRank依赖于很多东西,这些东西的总和是保密的,但人们注意到的一件事是,在其他条件相同的情况下,描述性文本URL的排名更高。这就是为什么Stack Overflow在问题编号后使用该文本。
发布于 2011-06-07 21:06:06
在实现带有名称的路由时要小心,你需要验证输入的名称是否正确,否则你可能会因为让多个URI共享相同的内容而损害页面上的SEO排名,要么设置一个适当的规范,要么让你的控制器在访问“错误”URI时发出301。
我对后一种解决方案所做的快速总结可以在以下位置找到:
http://mynameiscoffey.com/2010/12/19/seo-friendly-urls-in-asp-net-mvc/
关于规范的一些信息:
http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
https://stackoverflow.com/questions/1325698
复制相似问题