在实验中我们发现,无论我们使用哪个域名都可以的,而且出现一个情况,我们只是在hosts文件中将某一域名与自己的ip对应,配置中并没有这个域名,也可以登录我们的discuz界面,这个并不是我们想要的。所以我们需要设定一个默认虚拟主机来将诸如此类的访问拦截。


我们只需要在配置文件httpd-vhost.conf中,在我们设置的虚拟主机前再添加一个,配置如下。

# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

   DocumentRoot "/tmp/123"

   ServerName 2142.com

</VirtualHost>

# mkdir /tmp/123

# chmod 000 /tmp/123

# /usr/local/apache2/bin/apachectl -t

# /usr/local/apache2/bin/apachectl start

这是我们会发现上方提到的域名访问不到我们的discuz,但同时我们又发现一个问题,我们设置三个域名,虽然可以成功访问,但是主页域名不相同,这个不符合我们的正常思维,而且这个会影响搜索

所以这里使用301域名跳转的方法,虽然3个域名都可以访问,但是会跳转到一个我们指定的域名

例如,www.aaa.com访问,进入后会自动跳转到www.test.com

配置如下,写入第二个虚拟主机内

# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

<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>

运用了rewrite模块,无论使用3个域名的哪个访问,都会跳转至www.test.com

# /usr/local/apache2/bin/apachectl -t

# /usr/local/apache2/bin/apachectl start


测试

# curl -x127.0.0.1:80 www.aaa.com -I

HTTP/1.1 301 Moved Permanently

Date: Thu, 17 Nov 2016 19:05:32 GMT

Server: Apache/2.2.31 (Unix) PHP/5.6.28

Location: http://www.test.com/

Content-Type: text/html; charset=iso-8859-1

成功