1. 将一个网址永久定向到另一个网址:
比如将www.yoursite1.com 定向到 www.yoursite2.com, 可以在你的 yoursite1.com的根文件夹内的.htaccess 文件中加入这样一行:
Redirect permanent / http://www.yoursite2.com/
如果没有.htaccess 文件,要新建一个。这样,当用户访问 www.yoursite1.com 时,将自动转向 www.yoursite2.com . 同时也是告诉搜索引擎这两个域名的关系。
2. 将主页的几个地址表达形式定向到一个地址,这样做的好处,可以参看这里。在你选定一个根地址以后,用这种方法使网站内的所有链接保持一致,可以使搜索引擎清晰的了解你的网站,不至于迷惑。
一般,网站的首页都有几种链接可以达到,比如,http://www.yoursite.com/ , http://yoursite.com/ , http://www.yoursite.com/index.html (或/index.php, /default.asp), http://yoursite.com/index.html (或/index.php, /default.asp) 等这几种形式都可以通向你的网站首页。
如果你选定了http://www.yoursite.com/ 作为你的网站根地址,可以用下面的301重定向将其他几种形式定向到跟网址,在你的.htaccess中加入下面几行:(需要注意的是,你必须运行的是apache服务器)
rewriteEngine on
rewriteCond % ^yoursite.com
rewriteRule ^(.*)$ http://www.yoursite.com/$1 [R=301,L]
# Redirect client index.html requests to /
rewriteCond % ^[A-Z] /index.html HTTP/
rewriteRule ^index.html$ http://www.yoursite.com/ [R=301,L]
上面的方案可以将 http://yoursite.com/ 和 http://www.yoursite.com/index.html 定向到 http://www.yoursite.com/ 这个根地址。
如果你选定 http://yoursite.com/ 作为根地址,可以用下面方案将 http://www.yoursite.com/ 定向到你的根地址。和上面的方案一样的效果,重定向后你的网站内所有的地址都将使用的根地址的形式。Slashdotcn使用的即是这个方案。在.htaccess文件中加入下面几行:
RewriteEngine On
RewriteCond % www.yoursite.com
RewriteRule ^(.*)$ http://yoursite.com/$1 [R=301,L]
怎样做301转向?
如果你用的是Unix/Linux主机,可以用文件(Unix/Linux中用于目录特定指令如密码,转向,错误处理等的文件)。
比如把/old.htm转到http://www.domain.com/new.htm,可以用这个指令:
redirect 301 /old.htm http://www.domain.com/new.htm
或
redirect permanent /old.htm http://www.domain.com/new.htm
如果要把所有http://domain.com形式的URL用301重定向转到 http://www.domain.com,包括:
http://domain.com/about.htm
转到 http://www.domain.com/about.htm
及
http://domain.com/dir/index.htm
转到 http://www.domain.com/dir/index.htm
等等,还要用到mod_rewrite:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
如果你用的是 Windows主机,应该在控制面板做301转向设定。
补充 :在网址规范化评论里回答石头王的问题,可能对大家有帮助:
据我所知,HTML无法做301转向。在HTML里只能做JS或META REFRESH,但不是301转向。HTML一被读取,就已经返回200 OK状态码了。
如果你的页面是ASP或PHP还可以做301转向:
ASP:
<%
Response.Status="301 Moved Permanently" Response.AddHeader "Location", " http://www.domain.com"
>
PHP:
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://www.domain.com” );
?>