Apache .htaccess 301 统一主域名和更换域名示例

原创
Apache .htaccess 301 统一主域名和更换域名示例

网站通常都是 www 开头,但越来越多的网站为了美观和容易记忆选择去掉 www。也许你并不知道在搜索引擎的眼中,www.abc.com 和 abc.com 是两个网站,这会降低你网站排名,要如何避免网站被降权呢?下面的几种方法可以帮你提高网站排名哦!

301 与 304 转跳介绍

运维过程中我们会经常遇到需要转跳的场景,比如 www 转跳到不带 www 的网址上;网站更改域名后,需要把老网址转跳到新网址上等等。Apache 可以非常简便的实现转跳,通常大家喜欢使用 .htaccess 来实现转跳。

虽然都是转跳,但是也分“临时转跳”和“永久转跳”两种情况。比如你的网站维护,需要临时转跳到一个通知网页,你就可以使用 304 临时转跳。如果你换了网址,则可能更想用 301 永久转跳。接下来我们举例说明一下:

情况一:www 和合并

比如你想把 www.zhanglinhai.com、与 zhanglinhai.com 合并指向 zhanglinhai.com,可以这样写:


	RewriteEngine On
	RewriteCond %{HTTP_HOST} ^www.zhanglinhai.com [NC]
	RewriteRule ^(.*)$ http://zhanglinhai.com/$1 [L,R=301]

其中 RewriteEngine On 代表打开 Rewrite 复写功能。

情况二:网站更换域名

网站更换域名也是会遇到的,因为种种原因来源的域名不想要了,但是搜索引擎里的排名对你来说可是非常重要的,所以有没有更换域名但是可以保留搜索引擎排名的方法呢?当然有,依然是利用 301 转跳功能。

比如你的老域名是 cappn.com,你想把 cappn.com / www.cappn.com / www.zhanglinhai.com / 与 zhanglinhai.com 合并指向 zhanglinhai.com,可以这样写:


	RewriteEngine On
	RewriteCond %{HTTP_HOST} ^www.zhanglinhai.com [NC,OR]
	RewriteCond %{HTTP_HOST} ^linhaizhang.com [NC,OR]
	RewriteCond %{HTTP_HOST} ^www.linhaizhang.com [NC,OR]
	RewriteCond %{HTTP_HOST} ^cappn.com [NC,OR]
	RewriteCond %{HTTP_HOST} ^www.cappn.com [NC]
	RewriteRule ^(.*)$ http://zhanglinhai.com/$1 [L,R=301]

后面的 OR 表示“或”,每个条件一行,可以匹配任一条件。

情况三:子目录间转跳

工作中你应该会遇到目录路径改名,网站结构发生变化的情况,如果你的子目录发生了改变,也可以用 301 来做转跳。

例如:http://www.zhanglinhai.com/old/ → http://www.zhanglinhai.com/new/

RewriteCond %{HTTP_HOST} ^www.zhanglinhai.com$
RewriteRule ^old\/?(.*)$ http://www.zhanglinhai.com/new/ [R=301,L]

情况四:域名内所有图片指向 CDN

如果网站使用 CDN 加速,通常需要先做域名 cname 转跳,例如 http://www.zhanglinhai.com/img.jpg 转跳为 http://cdn.zhanglinhai.com/img.jpg 。除了使用 PHP 查找替换外,也可以用使用 htaccess 来简单处理。

例如:http://www.zhanglinhai.com/img.jpg → http://cdn.abc.com/img.jpg

RewriteCond %{HTTP_HOST} ^www.zhanglinhai.com$
RewriteRule ^(.*\.(flv|gif|jpg|jpeg|png|ico|swf))$ "http://cdn.zhanglinhai.com/$1" [R=301,L]

欢迎转载,但请勿用于任何商业用途,谢谢你!请标注以下信息『 原文出处:Apache .htaccess 301 统一主域名和更换域名示例 - 张林海博客 http://zhanglinhai.com/archives/256 』