﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-asdtiang-java study-随笔分类-seo</title><link>http://www.blogjava.net/asdtiang/category/47872.html</link><description>交流学习JAVA </description><language>zh-cn</language><lastBuildDate>Wed, 23 Feb 2011 05:01:27 GMT</lastBuildDate><pubDate>Wed, 23 Feb 2011 05:01:27 GMT</pubDate><ttl>60</ttl><item><title>struts2中实现html 301 302转向</title><link>http://www.blogjava.net/asdtiang/archive/2011/02/23/344892.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 23 Feb 2011 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/02/23/344892.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/344892.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/02/23/344892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/344892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/344892.html</trackback:ping><description><![CDATA[首先网上copy下什么是301，及302<br />
301转向(或叫301重定向，301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时，服务器返回的HTTP数据流中头信息(header)中的状态码的一种，表示本网页永久性转移到另一个地址。<br />
<br />
其它常见的状态码还包括，200表示一切正常，404网页找不到，302暂时转向，等等。<br />
<br />
为什么要做网址转向？<br />
<br />
你拥有不同TLD的多个域名：<br />
<br />
company.com　　<br />
company.net<br />
company.org<br />
company.com.cn<br />
company.cn<br />
等等。<br />
这些域名全部指向一个网站。如用company.com为主域名，其它域名就可以转向到company.com。<br />
<br />
或者你注册了公司全称域名longcompanyname.com，但太长&nbsp;&nbsp;，你也注册了缩写域名方便用户记住lcn.com，其中一个做主域名，另一个就可以转向到主域名。<br />
<br />
为什么要用301转向？<br />
<br />
网址转向方法主要包括：301转向，302转向，JavaScript转向，PHP/ASP/CGI转向，META&nbsp;&nbsp;REFRESH网页META刷新，等。302转向可能会有URL规范化问题。其它方法都是常用的作弊手法，当然不是说不可以正当地用，方法本身没有错，但被作弊者用多了，搜索引擎对这些可疑的转向都很敏感。何必冒险呢。<br />
<br />
当网页A用301重定向转到网页B时，搜索引擎可以肯定网页A永久的改变位置，或者说实际上不存在了，搜索引擎就会把网页B当作唯一有效目标。好处是，第一，没有网址规范化问题，第二，也很重要的，网页A的PR网页级别会传到网页B。<br />
<br />
很多时候其它网站会链接到<br />
<br />
http://domainname.com<br />
http://www.domainname.com/index.html<br />
http://domainname.com/index.html<br />
<br />
而不是你希望的<br />
<br />
http://www.domainname.com<br />
<br />
这样链接的PR也会传递到所有URL，如果你用301转向把前三个URL转到<br />
http://www.domainname.com<br />
PR也就集中在网页http://www.domainname.com了。<br />
<br />
怎样判断网站有网址规范化问题？<br />
<br />
英语中有句话，东西没坏就别修理。很多网站没做301转向排名也没影响，那就别动它。<br />
<br />
如果你觉得网站排名没有预想的好，可以看看是否有网址规范化问题：<br />
<br />
1)&nbsp;&nbsp;查一下这些URL是否都有差不多的PR值和网页快照：<br />
<br />
http://domainname.com<br />
http://www.domainname.com/index.html<br />
http://domainname.com/index.html<br />
http://www.domainname.com<br />
<br />
如果是，那可能有问题。<br />
<br />
2)搜一下site:domain.com看是否结果中有多个主页版本。<br />
<br />
3)你的网站是否在Google有大量网页被标为&#8220;&nbsp;&nbsp;补充材料&#8221;(Supplemental&nbsp;&nbsp;Result)。一般认为被归为&#8220;&nbsp;&nbsp;补充材料&#8221;是网址规范化问题的征兆。<br />
<br />
怎样做301转向<br />
<br />
如果你用的是Unix/Linux主机，可以用文件(Unix/Linux中用于目录特定指令如密码，转向，错误处理等的文件)。<br />
<br />
比如把/old.htm转到http://www.domain.com/new.htm，可以用这个指令：<br />
<br />
redirect&nbsp;&nbsp;301&nbsp;&nbsp;/old.htm&nbsp;&nbsp;http://www.domain.com/new.htm<br />
<br />
或<br />
<br />
redirect&nbsp;&nbsp;permanent&nbsp;&nbsp;/old.htm&nbsp;&nbsp;http://www.domain.com/new.htm<br />
<br />
如果要把所有http://domain.com形式的URL用301重定向转到&nbsp;&nbsp;http://www.domain.com，包括：<br />
<br />
http://domain.com/about.htm<br />
转到&nbsp;&nbsp;http://www.domain.com/about.htm<br />
<br />
及<br />
<br />
http://domain.com/dir/index.htm<br />
转到&nbsp;&nbsp;http://www.domain.com/dir/index.htm<br />
<br />
等等，还要用到mod_rewrite：<br />
<br />
Options&nbsp;&nbsp;+FollowSymLinks<br />
RewriteEngine&nbsp;&nbsp;on<br />
RewriteCond&nbsp;&nbsp;%{HTTP_HOST}&nbsp;&nbsp;^domain.com&nbsp;&nbsp;[NC]<br />
RewriteRule&nbsp;&nbsp;^(.*)$&nbsp;&nbsp;http://www.bfzz.com/$1&nbsp;&nbsp;[L,R=301]<br />
<br />
如果你用的是&nbsp;&nbsp;Windows主机，应该在控制面板做301转向设定。<br />
<br />
据我所知，HTML无法做301转向。在HTML里只能做JS或META&nbsp;&nbsp;REFRESH，但不是301转向。HTML一被读取，就已经返回200&nbsp;&nbsp;OK状态码了。<br />
<br />
下面是struts2中实现301或者302<br />
<br />
其实很easy:<br />
<br />
action的result配置如下：status可以指定状态码。<br />
&lt;result name="to_first" type="httpheader"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name="status"&gt;301&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name="headers.Location"&gt;${object}/l/${city.cityUrl}-${country.countryUrl}/${cityId}/0/0&lt;/param&gt;<br />
&nbsp;&nbsp;&lt;/result&gt;<br />
<br />
另外type=<span class="code-quote">"redirectAction"时，默认为302跳转。用fireBug可以看得很清楚</span>
<pre class="code-java">&lt;action name=<span class="code-quote">"Logon"</span> class=<span class="code-quote">"tutorial.Logon"</span>&gt;
&lt;result type=<span class="code-quote">"redirectAction"</span>&gt;Menu&lt;/result&gt;
&lt;/action&gt;</pre>
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/344892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-02-23 10:11 <a href="http://www.blogjava.net/asdtiang/archive/2011/02/23/344892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>