我现在有如下标签:
asp.net,mvc4,关键字,asp.net mvc4
因为,我想做一个根据标签名查询有多少文章使用这个标签的功能,并列出文章。
控制器代码
public ActionResult Tag(string strTag) { //根据tag名得到tagid var tag = from t in db.Tags where t.TagName == strTag select t; int tagid = tag.FirstOrDefault().TagID; //根据tagid从表Tag_relationship获取哪些文章使用了这个tag var articles = from art in db.Tag_relationships where art.TagID == tagid select art; return View(articles.ToList()); }
然后写了个路由:
routes.MapRoute( "Tag", "tag/{strTag}", new { controller = "Tag", action = "Tag" } );
,这样在前台就可以这样访问:
http-://localhost:8286/tag/mvc4
http-://localhost:8286/tag/关键字
http-://localhost:8286/tag/asp.net
http-://localhost:8286/tag/asp.net mvc4
然页结果却只有前面二个链接能访问,后面二个带.和空格的都不能访问。报错如下:
XML/HTML code?123456789 HTTP 错误 404.0 - Not Found 您要找的资源已被删除、已更名或暂时不可用。 最可能的原因: 指定的目录或文件在 Web 服务器上不存在。 URL 拼写错误。 某个自定义筛选器或模块(如 URLScan)限制了对该文件的访问。
因为我想URL中带关键字对SEO会好一些,所以我没有用public ActionResult Tag(int id).
编码最大的坏处就是降低了链接的可读性。在web 3.0时代,链接不再是面向浏览器的东西,它应该面向最终用户。
seo偏好“带关键字的链接”是有道理的。即便有些搜索引擎不这么做,它们未来也极有可能这么做。因为好的搜索引擎一定是用户体验价值至上的。也就是说它应该首先找出搜索用户喜欢的网页。而具有用户可读链接是一件值得鼓励的事情。