在前:我使用的是Xampp,所以路径可能不同
找到apache\conf\extra\httpd-vhosts.conf
, 如果没有的话请自己新建httpd-vhosts.conf文件, 并且在httpd.conf
中Include conf/extra/httpd-vhosts.conf
NameVirtualHost *:80
## 如果没有匹配的ServerName则默认选择第一个配置
<VirtualHost *:80>
DocumentRoot "D:/Apps/xampp/htdocs/"
ServerName localhost
##ErrorLog "logs/dummy-host2.example.com-error.log"
##CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/Apps/xampp/htdocs/www/cdn"
ServerName cdn.demo.com
ServerAlias cdn.test.com
##ErrorLog "logs/cdn.demo.com.com-error.log"
##CustomLog "logs/cdn.demo.com.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/Apps/xampp/htdocs/www/admin"
ServerName admin.demo.com
ServerAlias admin.test.com
##ErrorLog "logs/admin.demo.com-error.log"
##CustomLog "logs/admin.demo.com-access.log" common
</VirtualHost>
修改host文件将cdn.demo.com
和admin.demo.com
指向127.0.0.1
重启后我们就可以通过cdn.demo.com
来访问apache目录下的cdn文件夹;同样,可以通过admin.demo.com
来访问admin文件夹
admin.demo.com
和cdn.demo.com
可以是不同的域名
注意在httpd-vhosts.conf
中
第一条VirtualHost配置
优先级最高, 如果请求的地址在其他VirtualHost配置
中未找到,则默认指向第一条, 通常也被称为主服务器
VirtualHost *:80 监听任何80端口的访问
VirtualHost * 监听任何地址
VirtualHost 127.0.0.1:80 仅监听127.0.0.1:的访问
VirtualHost后面可以有多个url, 用空格分割
ServerAdmin 管理员联系方式,可以在地址访问错误时现在在页面上,可忽略
ServerName 被映射到的域名
ServerAlias别名, 例如上面的, 通过别名cdn.test.com
也可以访问到cdn.demo.com
的内容
DocumentRoot 映射目录, 即文件存在的地址, 如果映射目录不存在则可能导致apache启动失败
关于其他包括代理,目录权限等更多内容请参考官方文档