针对Asp.net MVC SEO的几点建议

1. 引言

SEO 即搜索引擎优化,很多web开发人员本应该熟悉,至少需要了解的一个知识点。像百度、必应等搜索引擎其实一直都在进化。但是有些优化的技巧可能在短时间内不变。

今天就给大家介绍几个专门针对Asp.net MVC网站的SEO技巧, 当然有些技巧也通用于其他website.

2.  SEO工具

首先介绍下一个 SEO 的一个小工具(SEO Toolkit),这个工具有点类似于一些分析exe程序性能的工具。但是不同的是它主要针对网站分析出哪些页面需要做SEO优化。

如果你已经有一个网站上线了,用这个小工具测试,相信可以找出一些可以优化的地方。该工具是安装到IIS 7.x 里面的,确保你的主机已经安装了IIS,安装完该工具后,可以在IIS Manager上看到

点击进去 就可以使用该工具,它包含了网站SEO分析、Sitemap 生成和Robots相关。

这里我们主要使用第一个

可以看到它找出了不少可以SEO优化地方,比如 <meta name=description/> ,<h1/> 等等。每一个能优化的地方该工具都给出了详细的介绍和如何实现优化。

3. 优化技巧

1) 确保网站的所有链接都是有效的,这个不用多说。

2) 确保每一个页面都有一个独一无二的title,对于Asp.net mvc 来说把  <title>@ViewBag.Title</title> 放到_layout.cshtml head 中 ,然后在每个页面的对应的Action 中设置   ViewBag.Title 即可。这个title 表示了当前页面的主题。

3) 确保每个页面只有一个 <h1> 这里有些页面出于设计的原因不想影响网页美观,就可能不想要放置<h1>。如何解决这样的问题呢?

可以设置css 把<h1> 移出网页范围外,也可以将<h1> 文本的颜色调成背景色, 或者直接添加hidden 类隐藏<h1>, 虽然<h1> 被隐藏了但是还是能被搜索引擎抓取。

搜索引擎抓取的并不是render 之后的页面,而是整个Html 文档。相信不少网站就这么做的

4 )  设置canonical, 这个优化技巧主要是为了解决由于网址形式不同内容相同而造成的内容重复问题,比如有三个Url

http://51zhang.net/Oxford/HowOld
http://51zhang.net/Oxford/HowOld?addcomments=true
http://51zhang.net/Oxford/HowOld?deletecomment=true

这三个地址形式不同,第一个才是希望呈现给搜索引擎的,那么我们就可以在其他两个页面的head中添加canonical

<link rel=‘canonical‘ href=‘http://51zhang.net/Oxford/HowOld‘ />

从功能上讲 canonical可以理解为301永久重定向的辅助功能。

5 )   尽量少用Ajax实现的上一页,下一页列表。比如博客园的新闻列表:http://news.cnblogs.com/n/page/3/

如果采用Ajax在本页面实现翻页效果,对于爬虫而言其实是同一个Url。

6 )  尽量给网站添加robots.txt 和sitemap.xml

robots.txt 指示爬虫哪些可以爬取 哪些不可以爬取。比如 博客园的http://www.cnbeta.com/robots.txt

Disallow 表示哪些路劲是不能爬取的。

sitemap.xml 代表了整个网站的地图 能够告诉爬虫网站具体有哪些页面, 如果页面数量少,手动生成一个不是什么大问题。当页面过多时,

这里给大家推荐一个 sitemap 生成工具 https://github.com/maartenba/MvcSiteMapProvider

7 ) 使用直接路由 RouteAttribute

默认创建的Asp.net MVC项目,可以有好几种方式访问主页

但是有些搜索引擎在处理这样的问题时就没那么明智了。当然可以使用canonical。如果是Asp.net mvc5 就可以直接通过RouteAttribute

做优化。

4. 总结

SEO优化的技巧肯定不止这些,比如专门针对 前段采用AngularJs 的优化方式。这样的技巧也只有在实践中掌握.

欢迎访问我的个人主页 51zhang.net  网站还在不断开发中…..

时间: 2024-10-15 10:56:18

针对Asp.net MVC SEO的几点建议的相关文章

从一个针对ASP.NET MVC框架的Controller.Action的请求处理顺序来说整个请求过程。

下面引用的所有代码都源自ASP.NET MVC的源码,但是只选取其中的一部分. System.Web.Routing.UrlRoutingModule在管道事件中注册PostResolveRequestCache事件. protected virtual void Init(HttpApplication application) { application.PostResolveRequestCache += OnApplicationPostResolveRequestCache; } 在这

关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案

原文:http://www.cnblogs.com/chenxizhang/p/3821703.html 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 1.使用模板创建一个最简单的ASP.NET Web API项目,调试起来确认能正常工作 public class TestController : ApiController { // GET api/test public IEnumera

理解ASP.NET MVC中的Razor视图引擎

什么是 Razor ? Razor 是一种允许向网页中嵌入基于服务器的代码(C#)的标记语法,是微软针对ASP.NET MVC推出的模板引擎. C# 的主要 Razor 语法规则 Razor 代码封装于 @{ ... } 中 行内表达式(变量和函数)以 @ 开头 代码语句以分号结尾 字符串由引号包围 C# 代码对大小写敏感 C# 文件的扩展名是 .cshtml <!-- 单行代码块 --> @{ var myMessage = "Hello World"; } <!-

让ASP.NET MVC不使用jsonp也可以跨域访问

跨域问题仅仅发生在Javascript发起AJAX调用,或者Silverlight发起服务调用时,其根本原因是因为浏览器对于这两种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服务器明确地告知它允许跨域调用. 所以,跨域的问题虽然是由于浏览器的行为产生出来的,但解决的方法却是在服务端.因为不可能要求所有客户端降低安全性. 解决方案 针对ASP.NET MVC项目类型,我做了一些研究,确定下面的方案是可行的. 针对ASP.NET MVC,只需要在web.config中添加如下的内

[转] ASP.NET MVC 中你必须知道的 13 个扩展点

ScottGu 在其 最新的博文 中推荐了 Simone Chiaretta 的文章 13 ASP.NET MVC extensibility points you have to know,该文章为我们简单介绍了  ASP.NET MVC  中的 13 个扩展点.Keyvan Nayyeri(与Simone合著了 Beginning ASP.NET MVC 1.0 一书)又陆续发表了一些文章,对这13个扩展点分别进行深入的讨论.我将在以后的随笔中对这些文章逐一进行翻译,希望能对大家有所帮助.

改善 ASP.NET MVC 代码库的 5 点建议

MVC,建议 刚刚检查完支持工单中的一些代码,笔者想针对 ASP.NET MVC 应用的改进写一些建议.这些内容仍在笔者脑海中,愿与各位一同分享.若你已使用 MVC 一段时间,那么以下内容可能并不新鲜.本文更适用于不常使用 MVC 或尚未充分了解 MVC 的读者. 假设以下场景:你想弄清楚一个网络应用在生产环境下为何消耗了 Web 服务器2GB 内存,于是,你将生产环境中运行的应用版本部署到本地运行,用于分析和调试. 仔细查看代码后,你认真地分析,可能还时不时摇摇头,最终弄清了问题的本质,那么此

AJAX跨域调用ASP.NET MVC或者WebAPI服务的解决方案

问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模板创建一个最简单的ASP.NET Web API项目,调试起来确认能正常工作 public class UserController : ApiController { public UserModel getInfo() { UserModel um = new UserModel(); um.Uid = 5; um.UserName =

[翻译] 使用ASP.NET MVC操作过滤器记录日志

[翻译] 使用ASP.NET MVC操作过滤器记录日志 原文地址:http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_Filters.aspx 翻译:Anders Liu 摘要:日志记录是一种常见的交错关注点(Cross-Cutting Concern),很多ASP.NET开发者会在Global.asax文件中处理它.由于MVC是构建在ASP.NET之上的,所以你可以使用同样的解 决方式,但还有更好的方法.这篇文章

MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)

该示例演示如何使用MvcPager最基本的Ajax分页模式. 使用AjaxHelper的Pager扩展方法来实现Ajax分页,使用Ajax分页模式时,必须至少指定MvcAjaxOptions的UpdateTargetId属性,该属性值即是分页后要通过Ajax来更新的 DOM 元素的 ID. Ajax.Pager()方法返回AjaxPager对象,您可以通过Ajax.Pager()方法的重载来传递PagerOptions和MvcAjaxOptions参数,也可以通过新的AjaxPager的Opti