本篇文章介绍了各种环境下url 301转向的办法。先从博主月小升的博客谈起。
最近发下百度有时候收录带www的java-er.com的内容,有时候收录不带www的。看起来就不太爽。而且搞过SEO的朋友都明白,www.java-er.com/1.html和 java-er.com/1.html 会被百度认为是两个网页,但是内容相同。还是搞一下重定向吧。
月小升博客采用的apache主机
直接修改.htaccess 增加以下两行
RewriteCond %{http_host} ^java-er.com [NC]
RewriteRule ^(.*)$ http://www.java-er.com/$1 [R=301,L]
搞定www.java-er.com/1.html 自动跳转到java-er.com/1.html
但是。。。。。
发现首页不跳。
鼓捣了半天规则,还是不行。写一段代码吧。
$curl = $_SERVER['HTTP_HOST'];
if (ereg("www.java-er.com",$curl)) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://java-er.com");
exit();
}
以上内容加入index.php文件最上面 好了。。
X:301重定向是什么概念?
Mr.zhu:可以这样理解,在地址栏输入java-er.com这个URL,可以看到自动跳转到www.java-er.com 这个URL上,这样的效果即是301重定向。
X:那么应该不是所有的虚拟主机都支持这样的跳转吧?
Mr.zhu:是的,没错,要想支持跳转的条件是:
1、window的虚拟主机IIS的服务器,需要有安装 ISAPI_Rewrite这个组件。(咨询主机商是否支持)如果支持,则先2个域名都解析到同一个IP,然后在httpd.ini文件开始处加入以下规则:
RewriteCond Host: ^java-er\.com$
RewriteRule (.*) http\://www\.java-er\.com$1 [R,I]
上面这段代码要是没效果就试试下面这段
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond Host: ^java-er\.com$
RewriteRule (.*) http\://www\.java-er\.com$1 [I,RP]
2、linux的虚拟主机Apache的服务器,需要支持.htaccess 这个文件。(咨询主机商是否支持)如果支持,则先2个域名都解析到同一个IP,然后在.htaccess文件开始处加入一下规则:
1)将不带WWW的域名转向到带WWW的域名下
RewriteCond %{http_host} ^java-er.com [NC]
RewriteRule ^(.*)$ http://www.java-er.com/$1 [R=301,L]
2)重定向到新域名
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.java-er.com/$1 [L,R=301]
3)使用正则进行301转向,实现伪静态
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1
将news.php?id=123这样的地址转向到news-123.html
3、ASP下的301转向代码
<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://www.java-er.com/articles/301/”
%>
4、ASP.Net下的301转向代码
5、PHP下的301转向代码
header(”HTTP/1.1 301 Moved Permanently”);
header(”Location: http://www.java-er.com/articles/301/”);
exit();
6、CGI Perl下的301转向代码
$q = new CGI;
print $q->redirect(”http://www.java-er.com/”);
7、JSP下的301转向代码
<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.java-er.com/” );
response.setHeader( “Connection”, “close” );
%>
8、Apache下vhosts.conf中配置301转向为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:
ServerName www.java-er.com DocumentRoot /home/lesishu
ServerName lesishu.cn
RedirectMatch permanent ^/(.*) http://www.java-er.com/$1