我的中国站长录在清理论坛垃圾贴时,由于数据库不堪重压,崩溃了。在不得已的情况下利用二级域名新开了一个论坛。为了将瞬时降到最小值,想尽了办法挽回流量和人气。刚开始想了利用404跳转帖子,也尝试了Refresh语法跳转到目标论坛,但是收效甚微。在网上搜索了很多方法,终于找到了利用修改.htaccess文件实现了域名跳转,既挽回了流量也转移了网站的权重,一举两得。
不过写.htaccess对我这个菜鸟来说可不是件容易的事。既想能够301重定向跳转域名,又想保证重定向后的伪静态规则不变。尝试了很多次,也遇到了很多问题,其中和大家分享两点:第一,伪静态和重定向规则的顺序不能错,必须是先重定向规则,然后伪静态规则;第二,为了保证伪静态后的页面能正常打开,必须在重定向后的域名尾添加 / ,否则会出错。例如重定向后的域名是 wiki.ucwz.net 那么,必须改为 wiki.ucwz.net/
下面的引用部分同时实现了301重定向和Discuz DZ论坛的伪静态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Use PHP5CGI as default AddHandler fcgid-script .php # 将 RewriteEngine 模式打开 RewriteEngine On # 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 / RewriteBase / # Rewrite 系统规则请勿修改 RewriteCond %{HTTP_HOST} !^www.cnzzl.info$ [NC] RewriteRule ^(.*)$ http://bbs.cnzzl.info/$1 [L,R=301] RewriteRule ^archiver/((fid|tid)-[w-]+.html)$ archiver/index.php?$1 RewriteRule ^forum-([0-9]+)-([0-9]+).html$ forumdisplay.php?fid=$1&page=$2 RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+).html$ viewthread.php?tid=$1&extra=page%3D$3&page=$2 RewriteRule ^space-(username|uid)-(.+).html$ space.php?$1=$2 RewriteRule ^tag-(.+).html$ tag.php?name=$1 |
下面再转一篇不错的文章给大家看下,我就是按照下面这个来修改的。
VIA
出于SEO、PR值传递、网址转换的目的,在网站初建和网站迁移时我们都需要使用301重定向,通常包括域名对域名,目录对目录和一个独立网址对另一个独立网址的重定向。在bluehost虚拟主机上作301重定向,最常用的方法有2种:
1.直接编辑.htaccess。
2.用cPanel设定。
实质二者都是修改文件.htaccess,只是前者手工编辑,后者是由cPanel完成。用cPanel操作相当简单,登陆你的 cPanel(bluehost虚拟主机可以选简体中文)–>Domain–>Redirects,选择相应的选项即可完成设置,这里暂不讨论。下面讲一下直接编辑.htaccess的方法。
注意:在设置301重定向之前务必备份相应目录下的.htaccess文件。
1.重定向domain.com到www.domain.com
这种重定向旨在使域名唯一,是网站SEO必须要做的,后面重定向www.domain.com到domain.com也是出于同样的原因,只是形式不同。
打开.htaccess文件,加入以下规则。(下面的规则是针对主域名的,子域名要修改)
1 2 3 |
RewriteEngine On RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] |
2.重定向www.domain.com到domain.com
1 2 3 |
RewriteEngine On RewriteCond %{HTTP_HOST} !^domain.com$ [NC] RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] |
3.重定向olddomain.com到www.newdomain.com
1 2 3 |
RewriteEngine On RewriteCond %{HTTP_HOST} !olddomain.com$ [NC] RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301] |
4.重定向olddomain.com to newdomain.com
1 2 3 4 |
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !olddomain.com$ [NC] RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301] |
5.重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php
1 2 |
RewriteCond %{HTTP_HOST} ^www.domain.com$ RewriteRule ^file/file.php$ http://www.otherdomain.com/otherfile/other.php [R=301,L] |