针对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应用的核心需求 ...
随机推荐
- UI控件(UITextField)
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UITextField* textField1 = ...
- 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)
之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂 ...
- Python yield与实现
Python yield与实现 yield的功能类似于return,但是不同之处在于它返回的是生成器. 生成器 生成器是通过一个或多个yield表达式构成的函数,每一个生成器都是一个迭代器(但是迭 ...
- .net使用cefsharp开源库开发chrome浏览器(二)
离上篇写介绍pc端的混合开发和为什么以cefsharp入手研究混合开发已经有好几天,一直忙,抽不出时间继续写怎么搭建cefsharp开发环境.其实没有时间是借口,一切都是懒,没有爱到深处. 今天继续写 ...
- angularjs 2.0 快速开始
前言 angularjs2.0 如果发布,公司的项目会基于2.0开发,在1.0的时候就踩了好多坑,趁这2.0还没正式发布,赶紧踩下坑. 这篇文章是参考angularjs2.0 官方文档写的,开发环境需 ...
- Atitit 深入理解耦合Coupling的原理与attilax总结
Atitit 深入理解耦合Coupling的原理与attilax总结 耦合是指两个或两个以上的电路元件或电网络等的输入与输出之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传输能量的现 ...
- HTML5_01之表单新特性
1.WebStorm快捷键: Ctrl+Alt+(向下方向键):快速复制当前行 Alt+(向上/下方向键):移动当前行 Ctrl+D:删除当前行 Ctrl+/:快速(取消)注释当前行 Ctrl+Alt ...
- 使用未付费的账号真机调试 iOS 程序,过几天后程序一打开就会闪退
使用未付费的苹果开发者账号真机调试 iOS 程序,过几天后程序一打开就会闪退. 解决办法: 删除 Provisioning Profile,重新配置一次. 终极解决办法:花钱购买苹果开发者账号. ...
- 使用paramiko如何连接服务器?
本文和大家分享的是python开发中使用paramiko连接服务器的方法和步骤,希望通过本文的,对大家学习和使用paramiko有所帮助. ssh连接步骤 1.ssh server建立server p ...
- Socket实现仿QQ聊天(可部署于广域网)附源码(4)-加入数据库系统搭建完成
1.前言 这是本系列的第四篇文章,上一篇我们讲到实现了客户端对客户端的抖屏与收发各种类型文件,本篇文章我们加入SQLServer数据库实现登录与好友的添加等功能,并对界面做了美化处理.向往常一样我会把 ...