ServerPath 指令

语法 ServerPath URL-path
说明 为兼容性不好的浏览器访问基于域名的虚拟主机保留的URL路径名

要了解ServerPath 的作用,就不得不说一下http的host头信息
HTTP/1.1要求在请求的时候发送Host头域,值是资源的Intenet主机和端口号,也就是说你访问xxx.bbb.com:8080/aaa/bbb的时候,host头信息将xxx.bbb.com:8080。

但是老的浏览器不会发送这个host头信息。
于是在apache的虚拟服务器中,比如
<VirtualHost 172.20.30.40>
DocumentRoot /www/subdomain/sub1
ServerName www.sub1.domain.tld
ServerPath /sub1/
RewriteEngine On
RewriteRule ^(/sub1/.*) /www/subdomain$1
# ...
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/subdomain/sub2
ServerName www.sub2.domain.tld
ServerPath /sub2/
RewriteEngine On
RewriteRule ^(/sub2/.*) /www/subdomain$1
# ...
</VirtualHost>

因为对于虚拟主机来说,两个IP是相同的。当通过
www.sub1.domain.tld
或者
www.sub2.domain.tld
访问的时候,同时满足了两个虚拟主机,如果没有发送host过来,那么自然无法识别应该访问哪个虚拟主机。

于是这个时候ServerPath 起作用了。
如果发送了host,只要根据host的值和ServerName 比较一下而已,也就是说
www.sub2.domain.tld下面的任何路径都将映射到第二个虚拟主机。
但是没有发送host的情况就不行,这个时候只能根据路径来寻找了。
htp://www.sub1.domain.tld/sub1/符合第一个虚拟主机,于是进入第一个虚拟主机。
另外一点需要说明的是,如果没有发送host的主机,那么不管你是http://www.sub2.domain.tld/sub1/
还是http://www.sub1.domain.tld/sub1/
的请求,都将被第一个虚拟主机所处理。因为没有发送host,只能通过路径来发现,两个域名虽然不同,但是他们的路径都只满足第一个而不是第二个虚拟主机。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值