在本主机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
DocumentRoot "/tmp/123" # 设置一个不存在的目录,可以起到禁止的作用
ServerName 1111.com
[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 可以访问,那么我们的目的达到了。
apache 黙认的虚拟主机是第一个。
###########################################################################################
域名跳转 301
自定义的两个域名 www.test.com & www.aaa.com ,这两个域名要分一个主次。
只需要一个域名去提供服务。需要实现即使是访问 aaa ,也需要跳转到 test 上。
下面是配置文件。
添加一个模块
[root@OBird ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
ReWriteEngine on
ReWriteCond %{HTTP_HOST} ^www.domain1.com$ #跳转之前的条件
ReWriteRule ^/(.*)$ http://www.doamain2.com/$1 [R=301,L] # 下面这个是规则
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
aaa 能跳转,那么如果这个网站还有一个别名“bbb" 也要能跳
那么就是这样的语法: 注意红色字体部分,
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
ReWriteEngine on
ReWriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]
ReWriteCond %{HTTP_HOST} ^www.bbb.com$
ReWriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]