针对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 网站还在不断开发中…..
针对Asp.net MVC SEO的几点建议的更多相关文章
- 从一个针对ASP.NET MVC框架的Controller.Action的请求处理顺序来说整个请求过程。
下面引用的所有代码都来自ASP.NET MVC的源码,但是可能只选取每个方法的其中一部分. System.Web.Routing.UrlRoutingModule在管道事件中注册PostResolve ...
- 使用IdleTest进行TDD单元测试驱动开发演练(3) 之 ASP.NET MVC
一.[前言] (1)本文将用到IOC框架Unity,可参照<Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备>(2)本文的解决方案是基于前述<使用I ...
- AJAX跨域调用ASP.NET MVC或者WebAPI服务的解决方案
问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模板创建一个最简单的ASP.NET Web ...
- 使用ASP.NET MVC操作过滤器记录日志(转)
使用ASP.NET MVC操作过滤器记录日志 原文地址:http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_Filte ...
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模 ...
- ASP.NET MVC 监控诊断、本地化和缓存
这篇博客主要是针对asp.net mvc项目的一些常用的东东做一个讲解,他们分别是监控诊断.本地化和缓存.虽然前两者跟asp.net mvc看上去好像是没什么关联. 但其实如果真正需要做asp.net ...
- 让ASP.NET MVC不使用jsonp也可以跨域访问
跨域问题仅仅发生在Javascript发起AJAX调用,或者Silverlight发起服务调用时,其根本原因是因为浏览器对于这两种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服务器 ...
- [翻译] 使用ASP.NET MVC操作过滤器记录日志
[翻译] 使用ASP.NET MVC操作过滤器记录日志 原文地址:http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_ ...
- ASP.NET MVC 2 验证
来源:http://www.cnblogs.com/jhxk/articles/2612885.html 只为把自己觉的好的存起来 对用户输入的验证以及强制业务规则/逻辑是大多数web应用的核心需求 ...
随机推荐
- 玩转JavaScript OOP[1]——复杂类型
概述 在JavaScript中,我们可以使用函数.数组.对象,以及日期.正则等一些内置类型的实例,它们都是复杂类型的表现.从本质上讲,这些复杂类型都是Object类型.本篇将主要介绍三种Object类 ...
- EF for Oracle,dotConnect for Oracle,ODP.NET
dotConnect for Oracle dotConnect for Oracle是一款为Microsoft .NET Framework提供直接Oracle数据库连接的数据发生器控件.它完全基于 ...
- ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除
本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...
- 深入学习jQuery动画控制
× 目录 [1]动画状态 [2]停止动画 [3]动画延迟[4]全局控制 前面的话 jQuery动画可以使用fade.hide.slide等方法实现基本动画效果,可以使用animate实现自定义动画,甚 ...
- java笔试题
下面有关JVM内存,说法错误的是? A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的 B.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接 ...
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(2)
对于上面创建的这个Hello World应用来说,程序入口点由应用自身来提供,所以应用本身具有自我执行的能力.从应用托管(Host)的角度来讲,这样的应用同时负责对自身的托管.将应用与托管环境独立起来 ...
- jQuery UI Datepicker使用介绍
本博客使用Markdown编辑器编写 在企业级web开发过程中,日历控件和图表控件是使用最多的2中第三方组件.jQuery UI带的Datepicker,日历控件能满足大多数场景开发需要.本文就主要讨 ...
- 窥探Swift编程之错误处理与异常抛出
在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽.今天博客的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中 ...
- Connect(); // 2015 简要整理
去年 Connect(); 2014 Visual Studio Contact(); 直播笔记 对于我个人来说,今年 Connect(); 的三个重要发布: ASP.NET 5 RC1 Entity ...
- 订制DOM选择器
本来是打算参考zepto.js,然后将里面想要的部分抽出来做函数,随调随用. 但后面发现这种写法重复代码太多,代码不整洁,于是就打算模仿下zepto的写法,挑出些比较实用的方法,造一下轮子. 起名叫“ ...