我们现在有test和aaa在访问这个discuz论坛,那么这两个域名坑定会分一个主次,尤其是现在搜索引擎他会有一个排名权重,那么官方语言叫做“PR",那么PR高低会有影响的,那搜索引擎分辨不出主次,所以我们现在帮搜索引擎分清主次,这个时候我们就有一种方法叫做跳转:域名的跳转,访问aaa.com跳转到test.com,那我配置一下编辑虚拟主机配置文件
[root@zhangmengjunlinux ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
配置跳转,跳转用到一个模块叫做Rewrite模块
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.aaa.com$
RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
</IfModule>
我们来看一下Rewrite模块,有没有加载
[root@zhangmengjunlinux ~]# apachectl -M
Loaded Modules:
core_module (static)
authn_file_module (static)
authn_default_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_default_module (static)
auth_basic_module (static)
include_module (static)
filter_module (static)
log_config_module (static)
env_module (static)
setenvif_module (static)
version_module (static)
mpm_prefork_module (static)
http_module (static)
mime_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
so_module (static)
deflate_module (shared)
expires_module (shared)
rewrite_module (shared) 共享模块
php5_module (shared)
Syntax OK
我们需要改一下配置:
RewriteCond %{HTTP_HOST} ^www.aaa.com$ 跳转条件
RewriteRule ^(.*)$ http://www.test.com/$1 [R=301,L] 规则 L:表示LAST结束
^:以。。。。。开头
/(.*)是www.test.com/后面的 www.test.com代表HTTP_HOST
用$1去标记 最终会跳转到这个www.test.com 的$1
R=301 这个301是状态码
跳转分两种:一种是301 永久重定向,对搜索引擎友好
一种是302 临时重定向
我们网页域名跳转一定要用301,对搜索引擎非常友好的
可以用curl测试
[root@zhangmengjunlinux ~]# curl -x 192.168.140.100:80 www.aaa.com -I
HTTP/1.1 301 Moved Permanently
Date: Mon, 28 Dec 2015 15:56:11 GMT
Server: Apache/2.2.31 (Unix) PHP/5.3.27
Location: http://www.test.com//
Content-Type: text/html; charset=iso-8859-1
测试的时候可以指定一个IP ,-I可以看到状态码
有时候我们也会遇到不止两个域名的情况,aaa或者是bbb
<VirtualHost *:80>
DocumentRoot "/data/www/"
ServerName www.test.com
ServerAlias www.aaa.com
ServerAlias www.bbb.com
# ErrorLog "logs/dummy-host2.example.com-error_log"
# CustomLog "logs/dummy-host2.example.com-access_log" common
<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>
[OR]表示或者的意思,不加[OR]认为这两个条件同时存在