域名跳转也叫做301重定向,当我们变更网站域名,或者申请多个域名指向一个网站的时候,这个时候我们就会用到域名跳转(或者叫域名重定向redirect、域名转向)
几个特征码: 401 访问认证 403 不允许访问(配置文件能设置) 404 页面不存在 301 永久重定向 302 零时重定向 200 正确
域名跳转设置:
<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规则,当满足上面的条件时,这条规则才会执行,并将域名后面的移到www.123.com/后面 </IfModule> </VirtualHost>域名跳转需要mod_rewrite模块支持
打开虚拟主机配置文件:
[root@shuai-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.111.com 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>检测配置文件语法并重新加载配置文件
[root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl graceful检测Apache是否加载rewrite模块
[root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite没有加载,去配置文件设置
[root@shuai-01 ~]# vi /usr/local/apache2.4/conf/httpd.conf LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule php5_module modules/libphp5.so [root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite rewrite_module (shared)访问www.example.com会跳转到111.com
[root@shuai-01 ~]# curl -x127.0.0.1:80 www.example.com -I HTTP/1.1 301 Moved Permanently Date: Wed, 20 Dec 2017 08:57:28 GMT Server: Apache/2.4.29 (Unix) PHP/5.6.30 Location: http://111.com/ Content-Type: text/html; charset=iso-8859-1