在本主机C:\Windows\System32\drivers\etc 文件内,用任保域名指向当前IP 都可以该问到该网页。

# localhost name resolution is handled within DNS itself.

#127.0.0.1       localhost

#::1             localhost

#10.72.4.30              www.test.com www.aaa.com www.222.com

192.168.31.170          www.test.com  www.aaa.com



此时我们不管是访问 test 还是 aaa  ,222,都可以访问到论坛。但是我们如用IP 也是可以访问到的。

访问的都是我们黙认的虚拟主机,那么此时我们要把这个222 给禁掉。


在原来的配置文件里加

[root@OBird ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

   DocumentRoot "/tmp/123"  # 设置一个不存在的目录,可以起到禁止的作用

   ServerName 1111.com

</VirtualHost>


[root@OBird ~]# ls /tmp/123

ls: cannot access /tmp/123: No such file or directory

[root@OBird ~]# apachectl -t

Warning: DocumentRoot [/tmp/123] does not exist

Syntax OK

[root@OBird ~]# mkdir /tmp/123

[root@OBird ~]# chown 600 /tmp/123

[root@OBird ~]# apachectl -t

Syntax OK

[root@OBird ~]# apachectl restart

重启httpd 再访问 222,就是 403 禁止访问。IP 地址也是禁止访问的。

只有我们定议的 test & aaa 可以访问,那么我们的目的达到了。

wKioL1fp6Xvx30jPAADoJkKzhDQ341.jpg-wh_50

apache 黙认的虚拟主机是第一个。

###########################################################################################

域名跳转  301

自定义的两个域名 www.test.com & www.aaa.com ,这两个域名要分一个主次。

只需要一个域名去提供服务。需要实现即使是访问 aaa ,也需要跳转到 test 上。

下面是配置文件。


添加一个模块

[root@OBird ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 

 <IfModule mod_rewrite.c>

      ReWriteEngine on

      ReWriteCond  %{HTTP_HOST} ^www.domain1.com$ #跳转之前的条件

      ReWriteRule ^/(.*)$ http://www.doamain2.com/$1 [R=301,L]  # 下面这个是规则

    </IfModule>

      ReWriteCond  %{HTTP_HOST} ^www.aaa.com$ #跳转之前的条件

      ReWriteRule ^(.*)$ http://www.test.com/$1 [R=301,L] 


www.test.com/121212  (.*) 表示“121212” 这部分  301 是状态码,叫做永久重定向。302 是临时。

L 表示 last 结束的意思。

保存退出,查看此模块有没有加载

root@OBird ~]# apachectl -M

 expires_module (shared)

 rewrite_module (shared)

 php5_module (shared)


[root@OBird ~]# apachectl -t

Syntax OK

[root@OBird ~]# apachectl graceful

测试 输入 www.aaa.com/3333333 会自动跳转到 test,因为333333本身是不存在的,所以是404

wKiom1fp8AbTjliTAADM5CzAPO8305.jpg-wh_50


aaa 能跳转,那么如果这个网站还有一个别名“bbb" 也要能跳

那么就是这样的语法: 注意红色字体部分,

<VirtualHost *:80>

    DocumentRoot "/data/www"

    ServerName www.test.com

    ServerAlias www.aaa.com

    ServerAlias www.bbb.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$ [OR]

      ReWriteCond  %{HTTP_HOST} ^www.bbb.com$

      ReWriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]

    </IfModule>

wKiom1fqHBXylL2LAACK78XzD5g005.jpg-wh_50