但是我们之前只设置了两个域名,www.test.com和www.aaa.com。
两个域名都可以访问这个站点,但是需要分出个主次,无论哪个域名访问,都跳转到主域名上。
怎么去配置权重,分出主次呢?
去编辑虚拟主机配置文件:
[root@No test]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
红色部分为添加。
<VirtualHost *:80>
# ServerAdmin [email protected]
DocumentRoot "/data/www"
ServerName www.test.com
ServerAlias www.aaa.com
# ErrorLog "logs/dummy-host.example.com-error_log"
# CustomLog "logs/dummy-host.example.com-access_log" common
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.aaa.com$
RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
</IfModule>
<Directory /data/www/test>
AllowOverride AuthConfig
AuthName "zhanghaomima"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</Directory>
//不管哪个域名都直接跳转到www.test.com
[R=301,L] 301状态码,是永久重定向,对于搜索引擎来说是友好的,302是临时重定向,
L是结束,last,到这里就结束了。
如果是多个域名的话需要按照以下配置:加上[OR]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.bbb.com$
RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
</IfModule>
[root@No test]# apachectl -t
Syntax OK
[root@No test]# apachectl graceful
理论上,再去浏览器中访问www.aaa.com会自动跳转到www.test.com。
而我去访问www.aaa.com时候并没有跳转。
[root@No test]# apachectl -M
发现并没有rewrite_module的这个模块,导致不能跳转。
解决方法:
[root@No test]# vim /usr/local/apache2/conf/httpd.conf
找到这一行:#LoadModule rewrite_module modules/mod_rewrite.so
修改为:LoadModule rewrite_module modules/mod_rewrite.so
:wq
[root@No test]# apachectl -M
再次去查看模块,发现已经有了rewrite_module (shared)这个模块。
再去浏览网页,已经可以域名跳转了,访问www.aaa.com会自动跳转成www.test.com.