ECOS百科全书|高级搜索|RSS订阅|加入收藏|服务中心|联系我们欢迎您光临!

利用.htaccess实现301重定向的方法

来源:清风创科 发布时间:2012-10-31 23:42 字体:【   点击

出于 SEO、PR 值传递、网址转换的目的,在网站初建和网站迁移时我们都需要使用 301 重定向,通常包括域名对域名,目录对目录和一个独立网址对另一个独立网址的重定向。

在虚拟主机上作 301 重定向,最常用的方法有2种:第一种就是用 cPanel 设定。用 cPanel 操作相当简单,登陆你的 cPanel–>Domain–>Redirects,选择相应的选项即可完成设置,这里暂不讨论。第二种就是直接编辑 .htaccess。实质二者都是修改文件 .htaccess,只是前者手工编辑,后者是由 cPanel 完成。这里主要介绍的第二种方法。

注意:在设置 301 重定向之前务必备份相应目录下的.htaccess文件。

1.重定向domain.com到www.domain.com

这种重定向旨在使域名唯一,是网站SEO必须要做的,后面重定向www.domain.com到domain.com也是出于同样的原因,只是形式不同。打开.htaccess文件,加入以下规则。(下面的规则是针对主域名的,子域名要修改,否则子域名也会被重写,下面会专门对这个进行说明)

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

2.重定向www.domain.com到domain.com

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

3.重定向olddomain.com到www.newdomain.com

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

4.重定向olddomain.com to newdomain.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
EewriteRule ^(.*)$ http://newdomain.com$1 [L,R=301]

5.重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^file/file.php$ http://www.otherdomain.com/otherfile/other.php [R=301,L]

5.重定向domain.com到www.domain.com,而且不影响子域名

之所以特别说明不影响子域名,是由于上面说的那个方法只有在没子域名的情况下才可行,如果域名含有子域名,而且子域名又不想被重定向,这时候就需要下面的方法来进行301重定向;

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.hnqss.cn|t.hnqss.cn)$ [NC]
RewriteRule ^(.*)$ http://www.hnqss.cn$1 [L,R=301]

上面的代码说明:第一行表示说开启mod-rewrite,第二行就表示要重定向的对象,代码的意思是出了www.hnqss.cn和 t.hnqss.cn这两个域名之外的所有域名,因为本博含有一个子域名的微薄t.hnqss.cn,意思是当域名是t.hnqss.cn的时候不 进行重定向,第三行表示要重定向的目标。上面是一个例子,其实主要思想还是正则表达式,如果有多个子域名不想重定向,则同样的可以在第二行进行添加!有什 么问题大家可以在后面提出,我知道的尽量解答。

特别注意的是,本文的这些方法只适用于支持htaccess文件的系统,即只适用于Linux系统,至于windows系统的空间暂时我还没研究。

以下为代码示例(与Shoepx伪静态规则合并)

#$Id: root.htaccess 17348 2008-12-23 05:53:22Z flaboy $
AddEncoding gzip .jgz
AddType "text/javascript;charset=UTF-8" .jgz
AddEncoding gzip .zcss
AddType "text/css;charset=UTF-8" .zcss
<IfModule mod_rewrite.c>
RewriteEngine  on
# 设置RewriteBase的值为你的商店目录地址
RewriteBase /
RewriteRule ^themes/.*\.(html|xml)$ / [F]
RewriteCond %{REQUEST_FILENAME} \.(html|xml|json|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|
ascx|jsp|cfm|cfc|pl|cgi|shtml|shtm|phtm)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]
 # 301 重定向到www 开始
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.hnqss.com|blog.hnqss.com)$ [NC]
RewriteRule ^(.*)$ http://www.hnqss.com$1 [L,R=301]
# 301 重定向结束
</IfModule>
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
注:把红字部分替换为你的域名即可。

值得说明的是,此方法仅仅针对http://hnqss.com 跳转到http://www.hnqss.com,并不会影响子域名如http://bbs.hnqss.com的使用。

------分隔线--------

关键词:利用,.htaccess,实现,301,重定向,的,方法,出

转载请保留:http://www.hnqss.cn/html/jszx/service/article-130.html

------分隔线--------
尚未注册畅言帐号,请到后台注册