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

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

代码:publicstaticStringgetReal(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 "";

}

}

从上面可以直接得到真实的domain和queryString。

自己重新看这个地方的时候发现,我没把依赖包放这里。抱歉!!!依赖包如下:

org.apache.httpcomponents

httpmime

4.4

commons-httpclient

commons-httpclient

3.1

然后LoggerUtils 这个类不用管,直接删除即可。

301 和 302 的区别?

一、官方说法。

301,302都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:301redirect: 301代表永久性转移(Permanently Moved)。

302redirect: 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状态码详解

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

¥我需要走的更远,点击我 赞助。

如果还有疑问,点击我加群,为你提供最好的解答。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值