`
卡拉阿风
  • 浏览: 99620 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

浅谈301,404,500

    博客分类:
  • SEO
阅读更多
先说301
网站上线一个星期不到,在google和百度发现网站被盗链,
即在google搜索 自己的网站,在第一页发现被收入,但是链接地址不是自己的网站地址。
经过分析得出,该域名解析到我们的网通,(在其他搜索引擎也发现几个不同域名解析到我们网站,先不说是怎么回事)
这样导致的结果是google同时收入多个域名下的我们网站,分散掉我们网站被搜索引擎的收入量,同时会误导用户对我们域名的记忆。
解决办法:
1.写个过滤器
String referrer = request.getHeader("referer");
String sitePart = "http://" + request.getServerName();
if (null == referrer || referrer.startsWith(sitePart)) {
// 处理正当的访问请求,进行后续操作。
...
}
else {
//非法访问请求跳转到本站的提示页面
...
}

2.通过apache来控制
实现方式很简单,只要修改httpd.conf相关代码就可以了,如下:
<VirtualHost *.*.*.*:80>
ServerName *.*.*.*
DocumentRoot "/var/www/nosite"
...
Redirect permanent /  http://www.ourdomain.com/
<Directory "/var/www/nosite">
...
</Directory>
</VirtualHost>

方法1对每个请求都会判断下,降低访问速度,同时要在每个页面返回301
方法2不需要手动加代码来实现跳转,能返回301状态,同时能做到把之前被收入的其他域名下的链接转换到自己域名下面。
故采用方法2,参考网上新旧域名的转换需要转换,但,我们是被多个域名盗链,也不知道以后会冒出什么其他域名来
在方法2中,ServerName后面跟的是自己的IP而不是自己的域名(网上写的是自己的olddomain),需要注意的是Redirect permanent /  http://www.ourdomain.com/
这句。这里不需要写正则,经过测试,完全通过,同时都返回301状态

浅谈404
参考几个大的网站,发现404页面返回的状态都是404(百度除外,返回的是302,可见百度对自己的细节也不是非常的重视,不过百度的404页面做的很人性化)

引用
从理论上说,对302错误,搜索引擎认为该网页是存在的,只不过临时改变了地址,仍然会索引收录该页,这样,同样会出现类似于200状态码时的重复文本问题;其次,以google为代表的主流搜索引擎对302重定向的适用范围要求越来越严格,这类不当使用302重定向的情况存在很大的风险。

确保自定义404错误页面能够返回404状态码

在自定义404错误页面设置完毕后,一定要检查一下其是不是能够正确地返回404状态码。可以使用Server Header检查工具,输入一个不存在网页的url,查看一下HTTP Header的返回情况,确信其返回的是404 Not found。

配置404很简单,jsp不需要在出错页面返回404状态,只需在web.xml统一配置下就OK了
<!-- 404 页面不存在错误 -->
<error-page>
<error-code>404</error-code>
<location>/common/404.html</location>
</error-page>
<!-- 500 服务器内部错误 -->
<error-page>
<error-code>500</error-code>
<location>/common/500.html</location>
</error-page>
<!-- java.lang.Exception异常错误,依据这个标记可定义多个类似错误提示 -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/common/error.jsp</location>
</error-page>

这里顺便把500和异常处理了,好处就是不把程序的异常抛出给用户,隐藏掉

如果你使用的是struts2,针对异常错误或请求还可以在struts.xml这样配置
<package name="test" namespace="/" extends="struts-default">
<global-exception-mappings>  
<exception-mapping result="error" exception="java.lang.Exception">  
</exception-mapping>  
</global-exception-mappings>
<action name="index" class="indexAction">
<result name="success">/jsp/index.jsp</result>
</action>
</package>

注意:<global-exception-mappings>必须在action之前配置
result="error"在<global-results>配置的出错页面

怎么查看headers?
推荐使用firefox+firebug
1
0
分享到:
评论
1 楼 何枫abc 2010-12-31  
分析的很详细,昨天我看到了一个道网易的面试题.说的就是这个.题目是这样的
"你谈谈jsp中的301,404,500是什么问题"只知道404,500一直都没看到301,在这里我终于知道301的原因了.在这里谢谢你了.

相关推荐

Global site tag (gtag.js) - Google Analytics