前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11.19/11.20 域名跳转

11.19/11.20 域名跳转

作者头像
运维小白
发布2018-02-06 15:37:43
4.9K0
发布2018-02-06 15:37:43
举报
文章被收录于专栏:运维小白

域名跳转概要目录

  • 需求,把123.com域名跳转到www.123.com,配置如下:
代码语言:javascript
复制
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    ServerAlias 123.com
    <IfModule mod_rewrite.c> //需要mod_rewrite模块支持
        RewriteEngine on  //打开rewrite功能
        RewriteCond %{HTTP_HOST} !^www.123.com$  //定义rewrite的条件,主机名(域名)不是www.123.com满足条件
        RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L] //定义rewrite规则,当满足上面的条件时,这条规则才会执行
</IfModule>
</VirtualHost> 
  • /usr/local/apache2/bin/apachectl -M|grep -i rewrite //若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#
  • curl -x127.0.0.1:80 -I 123.com //状态码为301

域名跳转

  • 域名跳转,常用于 老域名跳转到新域名,因为老用户已经习惯记住一个域名了,突然页面换到了新的域名,就需要做这个操作。一个域名就是一个网站的名称,都可以通过域名访问到该网站
  • 因为域名涉及到一个SEO,SEO会对网站的内容进行一个价值权重定义,旧网站价值高,会一直存在各大搜索引擎,会对新网站产生不可预料的影响,所以为了让老用户,和搜索引擎把重心转移到新网站,所以就需要做一个老域名跳转到新域名的操作。
    • SEO涉及到一个排名,网站的排名越高,在搜索引擎排名就越靠前,而这个权重是根据网站的页面数量来判定的,搜索引擎认为该网站比较有价值,就会提升该网站权重,而它判断网站是根据域名来的,在搜索引擎眼里,一个网站是根据域名来判断的。
  • 若一个网站同时有A、B两个域名可以同时访问,那搜索引擎会认为第二个B域名是一个冒牌货,所以搜索引擎会把高权重给第一个A域名,低权重给第二个B域名。
    • 而为了解决这种问题,把一个网站A域名跳转到另一个网站B域名上,提升跳转到的那个域名的权重,并且定义一个301的状态码——>301状态码叫做,永久重定向,永久跳转。
      • 永久跳转,搜索引擎它认为A网站不用了,就可以把A网站的权重降下去,然后把所有权重加到B网站上去,这就是301状态码的作用。

域名跳转配置文件介绍

  • 加入到配置文件的内容
代码语言:javascript
复制
<IfModule mod_rewrite.c> //需要mod_rewrite模块支持
        RewriteEngine on  //打开rewrite功能,on就是打开
        RewriteCond %{HTTP_HOST} !^111.com$  //定义rewrite的条件,主机名(域名)不是111.com满足条件。
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] //定义rewrite规则,当满足上面的条件时,这条规则才会执行
</IfModule>
  1. mod_rewrite模块,在编译apache的时候用到了一个most,most会把大多数模块编译进来;如果没有用most,没有加任何的编译参数,那mod_rewrite模块也不会出现
  2. 定义rewrite的条件,主机名(域名)不是111.com满足条件。当域名不是111.com的时候,就会跳转到111.com,也就是说现在以111.com为主域名,它的权重大一点。如果不是 ! 叹号,表示取反的意思。HOST就是定义的域名,111.com就是HOST。!^111.com$,表示以111开头的,到com结尾的,这样定义是为了包含111.com也会匹配
  3. 这个^/(.)$ 理解为: 非域名以外剩下的部分, / 斜杠表示域名后面的斜杠,(.)就是 / 斜杠后的所有, $表示结束语句
  • 凡是以 ^/(.)$ 域名的 都会跳转到 http://111.com/(.)
  • 这个 R=301,L 在跳转完成后还需要加一个R=301状态码,L 表示只跳转一次结束
  • 301是永久重定向
  • 302是临时重定向,临时重定向在搜索引擎不太友好,它会认为仅仅是临时的,不过把原来域名的权重降低

域名重定向实验操作

  1. 打开虚拟主机配置文件,并修改配置文件
代码语言:javascript
复制
[root@hf-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

更改前
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    #<Directory /data/wwwroot/111.com> 
    <FilesMatch 123.php>
       AllowOverride AuthConfig 
        AuthName "111.com user auth"
        AuthType Basic 
        AuthUserFile /data/.htpasswd  
        require valid-user
     </FilesMatch>
    #</Directory>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

更改后
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    #<Directory /data/wwwroot/111.com> 
    #<FilesMatch 123.php>
    #    AllowOverride AuthConfig 
    #    AuthName "111.com user auth"
    #    AuthType Basic 
    #    AuthUserFile /data/.htpasswd  
    #    require valid-user
    # </FilesMatch>
    #</Directory>
<IfModule mod_rewrite.c>
        RewriteEngine on 
        RewriteCond %{HTTP_HOST} !^111.com$  
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] 
</IfModule>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

然后保存退出
  1. 检测修改的配置文件是否存在语法错误
代码语言:javascript
复制
[root@hf-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
  1. 重新加载配置文件
代码语言:javascript
复制
[root@hf-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 ~]# 
  1. 在测试前,先检查是否加载了rewrite模块
代码语言:javascript
复制
[root@hf-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
[root@hf-01 ~]# 
  1. 这里会看到并没有加载rewrite模块,所以还需要到配置文件中打开rewrite模块
  2. 如果没有加载,还需要打开rewrite模块,因为在编译的时候指定了most,所以rewrite模块一定存在
代码语言:javascript
复制
[root@hf-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf

搜索/rewrite ,找到这一行,并将前面的# 号去掉

LoadModule rewrite_module modules/mod_rewrite.so
然后保存退出
  1. 检测修改的配置文件是否存在语法错误,并重新加载配置文件
代码语言:javascript
复制
[root@hf-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@hf-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 ~]# 
  1. 再来查看rewrite模块
代码语言:javascript
复制
[root@hf-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
 rewrite_module (shared)
[root@hf-01 ~]# 
  1. 查看虚拟主机配置文件
代码语言:javascript
复制
[root@hf-01 ~]# cat /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
  1. 开始测试
  • curl -x可以使用127.0.0.1也可以是192.168.133.130 进行测试,因为80端口监听的是全网 什么是监听全网
    • 全网,就是这台主机上所有的网卡的IP
  • 80端口默认是:::80,表示监听全网
代码语言:javascript
复制
[root@hf-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1525/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1199/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1525/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1513/mysqld         
tcp6       0      0 :::80                   :::*                    LISTEN      2586/httpd          
tcp6       0      0 :::22                   :::*                    LISTEN      1199/sshd           
[root@hf-01 ~]# 
  1. 在虚拟主机中添加2111.com.cn ,然后在重新检查语法错误,在加载配置文件
代码语言:javascript
复制
[root@hf-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

[root@hf-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@hf-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
  1. 访问2111.com.cn
  • curl -x192.168.74.150:80 2111.com.cn -I
    • -I参数,表示不显示内容,只看状态码
代码语言:javascript
复制
[root@hf-01 ~]# curl -x192.168.74.150:80 2111.com.cn -I
HTTP/1.1 301 Moved Permanently
Date: Wed, 20 Dec 2017 23:32:32 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Location: http://111.com/
Content-Type: text/html; charset=iso-8859-1

[root@hf-01 ~]# 
  1. 会看到状态码为301
  2. 查看2111.com.cn网站的内容
代码语言:javascript
复制
[root@hf-01 ~]# curl -x192.168.74.150:80 2111.com.cn
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://111.com/">here</a>.</p>
</body></html>
[root@hf-01 ~]# 
  1. 在域名后面随便添加字符,最后还是跳转到111.com
代码语言:javascript
复制
[root@hf-01 ~]# curl -x192.168.74.150:80 2111.com.cn/saasfagssd -I
HTTP/1.1 301 Moved Permanently
Date: Wed, 20 Dec 2017 23:39:50 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Location: http://111.com/saasfagssd
Content-Type: text/html; charset=iso-8859-1

[root@hf-01 ~]# 
  1. 去访问随便输入字符的网站,会显示404状态码
  • 404状态码,表示这个页面不存在
  • 401状态码,表示用户名密码验证的。如果验证不对,就是401状态码;验证对了,就是200状态码
代码语言:javascript
复制
[root@hf-01 ~]# curl -x192.168.74.150:80 http://111.com/saasfagssd -I
HTTP/1.1 404 Not Found
Date: Wed, 20 Dec 2017 23:42:08 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

[root@hf-01 ~]# 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 域名跳转概要目录
  • 域名跳转
  • 域名跳转配置文件介绍
    • 域名重定向实验操作
    相关产品与服务
    轻量应用服务器
    轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档