Java 获取HTPP 301 / 302 重定向后的Url地址,301和302对SEO的影响

信息发布:soゝso 发布日期:2016-08-22 17:37 热度:1959 分享到:

在我们 HTTP  请求的时候,有的时候目标地址发生了 301  302  等状态的改变,而改变后的地址我们是不知道的。最近在写 爬虫  的时候,爬取 百度  的地址的时候,发现 百度  是做了 301  到目标地址的,而我想直接得到每个真实的URL地址。通过 测试  ,发现下面方法是可以的。

代码:

public static String getReal(String url){
	try {
		HttpClient client = new HttpClient();
		HttpMethod method = new GetMethod(url);
		HttpParams params = client.getParams();
		params.setParameter(AllClientPNames.HANDLE_REDIRECTS, false);
		client.executeMethod(method);
		
		
		String realUrl = method.getURI().getURI();
		LoggerUtils.fmtDebug(CLAZZ, "获取真实的地址成功:%s,原地址是:%s",realUrl,url);
		return realUrl;
	} catch (Exception e) {
		LoggerUtils.fmtError(CLAZZ, "获取地址失败,原来的地址是:%s", e,url);
		e.printStackTrace();
		return "";
	}
}

从上面可以直接得到真实的domainqueryString

301 和 302 的区别?

一、官方说法。

301  302  都是 HTTP  状态的编码,都代表着某个URL发生了转移,不同之处在于:

  • 301  redirect: 301 代表永久性转移(Permanently Moved)。
  • 302  redirect: 302 代表暂时性转移(Temporarily Moved )。

二、实际区别。

    1>.用户角度。

        301 302 对用户来说没有区别,他们看到效果只是一个跳转,浏览器中旧的URL 变成了新的URL 。页面跳到了这个新的url指向的地方。

    2>.对于 搜索引擎  和站长。

        建议使用 301  ,如果是用 302  搜索引擎  会认为是可疑转向,甚至认为是作弊。

        为什么作为作弊?因为当网页A用 301   重定向  转到网页B时, 搜索引擎  可以肯定网页A永久的改变位置,或者说实际上不存在了,搜索引擎就会把网页B当作唯一有效目标。这样搜索引擎会把301 后的页面作为目标页面。

三、总结。

    要是你还是没明白,那么我就大白话告诉你,当我们平时 重定向  的时候,并没有留意要给设置状态,如下代码( Java  举例)。

//设置为301
hsResponse.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);   
hsResponse.setHeader("Location","/blog/");

    这样就设置为 301  了,我们这样设置表示,以后你什么时候访问都是跳转到新的 301  后的地址,而 302  是现在跳转到A页面,有可能明天跳转到B页面,又可能不跳转了,也就是一个是永久,一个表示不一定。

更多状态请看这里:HTTP状态码详解


本文主题

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

¥我需要走的更远,点击我 赞助。 如果还有疑问,点击我加群,为你提供最好的解答。


工具导航地图

 
Nodejs + socket Demo 赞助二维码 赞助名单 百度口碑点赞 查看QQ群美女帅哥 点击加QQ群 听音乐 开启弹幕 X
反馈意见