SpringMVC大坑一枚:ContentNegotiatingViewResolver可能不利于SEO

广大站长都有关注自己网站被搜索引擎收录的习惯,最近用百度、360等搜索引擎,查看了自己网站的一些情况,使用命令“site:fansunion.cn”。

我发现了一些异常信息,不止一次:
  “http://fansunion.cn/service
{"page":{"totalCount":5,"totalPage":1,"pageNo":1,"pageSize":10,"orderBy":null,"order":null,"params":{},"rows":[{"content":" 拜小雷为师,...
fansunion.cn/service 2014-11-13  - 百度快照 - 评价 - 翻译此页”
“http://fansunion.cn/code
{"page":{"totalCount":7,"totalPage":1,"pageNo":1,"pageSize":10,"orderBy":"id","order":"desc","params":{},"rows":[{"content":" SSH框架...
fansunion.cn/code 2014-11-16  - ”

“http://fansunion.cn/code
{ page :{ totalCount :8, totalPage :1, pageNo :1, pageSize :20, orderBy : id , order : desc , params :{}, rows :[{ content : , summary : 在线演示:小游戏-会飞的猪-FlappyPig , updat...
fansunion.cn/code 2014-11-09”
 
  很明显,这是JSON格式的数据。
  但是,我是用Freemarker直接渲染的页面,不可能是我主动响应JSON格式的数据。

于是,很快联想到,项目中有SpringMVC如下配置:

<bean
 class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
 <property name="defaultContentType" value="application/json" />
 <property name="mediaTypes">
  <map>
   <entry key="html" value="text/html" />
   <entry key="json" value="application/json" />
   <entry key="xml" value="application/xml" />
  </map>
 </property>
 <property name="defaultViews">
  <list>
   <bean
    class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
   </bean>
   <bean id="marshallingView"
    class="org.springframework.web.servlet.view.xml.MarshallingView">
    <property name="marshaller">
     <bean id="xStreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
      <property name="autodetectAnnotations" value="true" />
     </bean>
    </property>
    <property name="contentType" value="application/xml" />
   </bean>
  </list>
 </property>
</bean>

有了上述配置,一个请求,a.html动态渲染, a.json返回json格式的数据。

公司项目中这么配置的,我觉得也挺有好处的,JSON格式的请求,只要在请求后面以.json格式就好了,后端不需要再手动写代码了。
比如下面的代码:

private void list(HttpServletResponse response,
  List<Map<String, Object>> list) {
 JSONObject jsonObject = new JSONObject();
 jsonObject.put("list", list);
 super.returnJsonObject(response, jsonObject);
}

总之一句话,公司项目boss采用这种配置,最大的目的就是,很方便地响应.html页面和.json数据,甚至是2者同时支持。
但是,实际情况证实,这种情况很可能 不利于百度-360等搜索引擎的优化。

最后,我决定全面废弃: ContentNegotiatingViewResolver。
如果需要JSON格式的数据,手动使用FastJSON响应。

实践出真知呀~
自己动手写网站,还是很锻炼人的~问题一大堆~

原文首发:http://fansunion.cn/article/detail/558.html

时间: 2024-10-11 07:28:51

SpringMVC大坑一枚:ContentNegotiatingViewResolver可能不利于SEO的相关文章

选择一个利于SEO的空间

大家好.今天蜗牛将给大家分享怎么选择一个利于SEO的站点空间. 一.什么是站点空间? 站点空间,是用来存你的站点的HTML,.图片.文件等的一个远程硬盘空间(就像你的电脑里面的空间一回事儿).依据不同的须要,我们须要用到不同的空间. 二.空间分为哪几种呢? 我们用来放站点的空间,一般分为虚拟主机.VPS.云主机.server. 虚拟主机:虚拟主机是在网络server上分出一定的磁盘空间供用户放置网站.应用组件等,提供必要的网站功能.数据存放和传输功能.所谓虚拟主机,也叫"网站空间",就

到底二级域名和一级域名哪个更利于SEO

到底二级域名和一级域名哪个更利于SEO呢?本文是从百度官方转载详细的介绍:二级域名和一级域名的区别,请各位认真阅读. 二级域名和子域名的区别可以通过以下3点来解读: 一,二级域名的特点 搜索引擎往往将二级域名当作一个独立的网站看待,同时会视情况将主域名的评价传递一部分给二级域名.使用二级域名会使同domain下站点变多,但是每个站点的体量变小. 二级域名的SEO特点是: 1,二级域名对用户来说也是一个完整的域名,显得更有权威性 2,二级域名网页之间相关性更强,对于搜索引擎来说主题更集中 3,相较

URL传递中文参数,大坑一枚,Windows与Linux效果竟然不一致

下午,计划2个小时搞定,个人官网第6次升级,就可以干点轻松的事了,结果,下午多搞了2个小时,晚上又搞了2个小时,才搞定. 最后一个世界难题是,URL传递中文参数. 问题大致是这么出现的:我为"博客雷观" 这个栏目,增加了"全文搜索"功能,用lucene实现的.因此,需要传递中文参数.搜索框表单提交,传递中文,很简单就搞定了. 搜索之后的分页url,需要带上当前的"搜索词" ,比如"程序员",我在本地很轻松就搞定了.无非就是这样

H5响应式网站更利于SEO优化

H5响应式网站的SEO优化的效果更好!你知道吗?而且H5响应式网站的搭建也很方便,无论是企业还是个人都可直接借助H5自助建站系统轻松完成网站的搭建,可以实现智能适应各类屏幕,最重要的是其SEO优化收录排名效果很好,小编就在这里给大家简单介绍一下. 1.H5响应式网站加载快 响应式网站在加载图片时,能自动识别智能终端图片,根据浏览设备做到自动加载响应图片.平均节省图片流量80%以上,下载速度更是可以提高5倍以上,网络响应高速,搜索引擎更喜欢. 2.兼容所有上网设备,统一管理 H5响应式网站可以兼容

浅谈网站空间如何选择利于seo优化

www.mypm.net/expert/show_question_content.asp?questionId=276748www.mypm.net/expert/show_question_content.asp?questionId=276772www.mypm.net/expert/show_question_content.asp?questionId=276824www.mypm.net/expert/show_question_content.asp?questionId=2768

Laravel 中通过自定义分页器分页方法实现伪静态分页链接以利于 SEO

我们知道,Laravel 自带的分页器方法包含 simplePaginate 和 paginate 方法,一个返回不带页码的分页链接,另一个返回带页码的分页链接,但是这两种分页链接页码都是以带问号的动态参数形式附加在查询字符串中,形如 https://laravelacademy.org?page=100,但是这种包含动态参数的 URL 格式对 SEO 不友好,我们最好将其转化为 https://laravelacademy.org/page/100 这种不带问号的伪静态分页链接格式,遗憾的是

SpringMVC中用@ParamVariable传递的参数包含斜杠(/)时,匹配不了报404错误的解决方案

今天做网站[标签]筛选功能时,出现了这么个奇葩的问题. 我是直接通过<a>标签中href来跳转的,url中包含汉字 <a href="/tags/标签A">标签A</a> 后台代码是这样的: @RequestMapping(value = "/tags/{tagname}") public String tags(@PathVariable String tagname) { // ISO-8859-1 ==> UTF-8

转: Rest简介及Spring实现

一 Roy Fielding 2000年Rest被Roy Fielding提出来的,我对Roy Fielding的印象有以下几个. 一是RoyFielding做为Http协议的起草者,在Http协议发布没多久跳起来说这个世界上很多人对于Http的使用是错误的,所以他说大家应该用Rest. 二是没多久RoyFielding做为Rest思想的启蒙者,在Rest被人接受并被广泛使用没多久跳起来说这个世界上很多人对Rest的使用是错误的.. 所以我在PPT上选了柏拉图的一句话做为副标题,"思想永远是宇宙

数据库使用时遇到的javabean

大坑一枚.被坑去半天时间.因对数据库及公司使用的jade一知半解. 最后了解是javabean问题,源于所定义的类不满足javabean的定义规范,所以从字符串拼接,解析成sql语法的时候,总是报错,最终才发现是java bean的问题. 好好学习一下stackoverflow上的java bean的定义,http://stackoverflow.com/questions/3295496/what-is-a-javabean-exactly A JavaBean is just a stand