最简单的方法:
一、打开httpd.conf,找到:
#Include conf/extra/httpd-vhosts.conf
取消这一行的注释,即删除前面的#
二、打开 conf/extra/httpd-vhosts.conf
比如要添加一个 uri 为 local.weitwo.com的virtual host,映射到本机的80端口,那么修改或者复制example中的<VirtualHost></VirtualHost>节点,
修改其中的ServerName为 local.weitwo.com 即可
<VirtualHost *:80>
ServerAdmin t@local.weitwo.com
DocumentRoot "D:/Project/PHP/WeiTwoWebsite"
ServerName local.weitwo.com
ErrorLog "logs/local.weitwo.com.log"
CustomLog "logs/t.weitwo.com-access.log" common
</VirtualHost>
然后再修改本机的host文件, 位于system32/driver/etc下,增加: 127.0.0.1 local.weitwo.com
此时即可在本机访问local.weitwo.com了
二、为VirtualHost添加 url rewrite
1.在httpd.conf中,找到如下行
#LoadModule rewrite_module modules/mod_rewrite.so
取消其注释,即删除前面的“#”
2.在VirtualHost中,添加Directory节点,指定AllowOverride为All,如果你想通过.htaccess中写rewrite规则,就不需要再做什么了,如果你想直接在conf文件中写rewrite rule,直接在Directory节点中写rewrite规则即可。
最终的VirtualHost像下面这样:
<VirtualHost *:80>
ServerAdmin t@local.weitwo.com
DocumentRoot "D:/Project/PHP/WeiTwoWebsite"
ServerName local.weitwo.com
ErrorLog "logs/local.weitwo.com.log"
CustomLog "logs/t.weitwo.com-access.log" common
<Directory "D:/Project/PHP/WeiTwoWebsite">
#Options Indexes FollowSymLinks
AllowOverride All
#RewriteEngine on
#RewriteRule ^c.php$ a.html
</Directory>
</VirtualHost>
或者直接在httpd.conf文件末尾添加以下内容
NameVirtualHost *:80
<VirtualHost *:80>
ServerAlias abc.sh.cn *.abc.sh.cn
DirectoryIndex index.html
DocumentRoot /var/www/abc/
ServerName abc.sh.cn
ErrorLog logs/abc.sh.cn-error_log
</VirtualHost>
<VirtualHost *:80>
ServerAlias cba.cn *.cba.cn
DirectoryIndex index.html index.php
DocumentRoot /var/www/cba/
ServerName cba.cn
ErrorLog logs/cba.cn-error_log
</VirtualHost>
这样就可以使用两个域名解析到同一IP上却得到不同页面。
如果要禁止用户直接用IP进行访问,只要在
NameVirtualHost *:80
这句之后插入以下内容:
<VirtualHost *:80>
ServerName YourIpAddress
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>