案例:当访问lsx.com网站,是我最早论坛的域名。回车之后会自动跳转到lshx.com。
为什么药lsx跳转到lshx.com呢?
为了统一品牌。建议换成了lshx.com。所有之前的lsx.com就不要用了,就让它跳转到lshx.com。是因为之前lsx.com上有很多的老用户,他们记得的地址是lsx.com。所有之前的域名还要使用,让老用户输入lsx.com能访问到lshx.con这个网站。
为什么要跳转,而不使用之前的域名呢?
这个涉及seo权重问题,权重怎么来的呢?是百度蜘蛛抓取了网站上的页面,保存在了它的数据库上,用户才能查找到。涉及seo排名靠前权重越高,因为百度认为是有价值的,所以提升了网站的权重,而它判断网站是根据域名来的。而一个网站可以用两个域名来访问,而百度会认为你的第二个域名是一个冒牌货。比如之前域名叫lsx.com,而lshx.com又能访问之前的网站,百度一对比发现怎么一模一样的呢,而之前lsx.com是网站的正主。会认为后面这个lsxh域名是冒牌货。会把高的权重给lsx,把低的权重给lshx。为了解决这个问题,想到了一个方案,把lsx跳到lshx网站去。并且定义一个301(永久重定向)状态码。百度人301它认为lsx不用了,把lsx权重给降下来。把所有的权重加到lshx上。

需求,把123.com域名跳转到www.123.com,配置如下:
:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
//需要mod_rewrite模块支持
RewriteEngine on //打开rewrite功能
RewriteCond %{HTTP_HOST} !^www.123.com$ //定义rewrite的条件,主机名(域名)不是www.123.com满足条件跳转到123.com来,以123.com为主域名
RewriteRule ^/(.)$ http://www.123.com/$1 [R=301,L] //定义rewrite规则,当满足上面的条件时,这条规则才会执行。比如123.com/12.php(^/(.))$1表示(.)也就是12.php。其中12.php保持不变,前面变更。R=301表示永久重定向,L表示只跳一次last

测试:
/usr/local/apache2/bin/apachectl -M|grep -i rewrite //若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
curl -x127.0.0.1:80 -I 123.com //状态码为301. 123.com为serveralias别名Windows测试要在hosts定义
curl -x192.168.211.149:80 www.example.com -I //-I显示状态码
HTTP/1.1 301 Moved Permanently

状态码
404 内容不存在
401 账号密码验证
301 永久跳转
302 临时跳转
403 granted改成denied出现403
200 允许访问