1. 这个用法比较普遍,一个网站可能会有多个域名,比如阿铭的论坛可以用www.lishiming.net访问也可以用 ask.apelearncom访问,而用www.lishiming.net访问的时候,浏览器里面的网址直接变成了askapelearn.com,这其实就是域名的跳转过程。做域名跳转有什么用呢?在笔者看来主要有两方面的作用:第一,一个站点有多个域名会对SEO有影响,说白了就是百度搜索关键词的排名有影响,如果把多个域名全部跳转到指定的一个域名,这样以这个域名为中心,就可以把权重集中在这个域名上,所以搜索关键词的排名也就靠前了;第二,如果之前的某个域名不再使用了,但是搜索引擎还留着之前老域名的链接,这意味着用户可能会搜到我们的网站并且点击老的域名,固需要把老域名做个跳转,跳到新域名,这样用户搜的时候,也可以访问到网站。

    那下面笔者将会实现一个需求,把123com域名跳转到www.123.com,
    打开虚拟主机的配置文件,配置如下:
    image.png
    image.png
    在 RewriteRule里是有正则表达式存在的,这和第1l章的正则异曲同工,相信那部分内容学明白了,这里你就不会有问题了。 RewriteRule后面由空格划分成三部分,第一部分为当前的URL(也就是网址)不过这个URL是不把主机头(也就是域名)算在内的。第二部分为要跳转的目标地址,这个地址可以写全(包含了主机头),当然也可以不加主机头,默认就是前面定义的 ServerName。第三部分为一些选项,需要用方括号括起来,301为状态码,它称作“永久重定向”(还有一种跳转用的状态码为302,叫作“临时重定向”),L表示“last”,意思是跳转一次就结束了。要实现域名跳转,需要有 rewrite模块支持,所以先查看htpd是否已经加载该模块,如果没有还需要配置:
    /usr/local/apache2.4/bin/apachectl -M|grep -i rewrite
    //如果没有任何输出,则需要编译配置文件。
    vim /usr/local/apache2.4conf/httpd.conf
    //搜索rewrite,找到那行把前面的#删除
    image.png
    重新加载一下配置文件,才会生效。
    image.png
    //有这一行输出,说明正常加载rewrite模块。
    配置完成后进行测试,笔者这里用curl测试就可以看到结果,如下:
    image.png
    可以看到状态码为301,跳转后的网址(Location那行)为http://www.123.com/。