自动虚拟主机文件夹在Apache 2.2

我目前在我的虚拟主机configuration中正在工作,但是我想修改它。

目前我的虚拟主机configuration看起来像

<VirtualHost *:8080> ServerName dev ServerAlias *.dev CustomLog "/Users/owen/Sites/logs/dev-access_log" combinedmassvhost ErrorLog "/Users/owen/Sites/logs/dev-error_log" VirtualDocumentRoot /Users/owen/Sites/%-2+/httpdocs </VirtualHost> 

所以这个自动路由,像http://owen.website.dev/Users/owen/Sites/owen.website/

但是,我想修改它,所以owen前缀是自动的,例如,当您访问http://owen.website.dev它将转到/Users/owen/Sites/website/

我试图干脆

 <VirtualHost *:8080> ServerName dev ServerAlias *.dev CustomLog "/Users/owen/Sites/logs/dev-access_log" combinedmassvhost ErrorLog "/Users/owen/Sites/logs/dev-error_log" VirtualDocumentRoot /Users/owen/Sites/owen.%-2+/httpdocs and #VirtualDocumentRoot /Users/owen/Sites/owen\.%-2+/httpdocs </VirtualHost> 

然而无济于事,请有人提供给我正确的VirtuaDocumentroot来启用这个自动虚拟主机?

谢谢

经过反复试验和解密apache文档后,我发现只要从path中删除- and +可以了。

所以,如果你使用

 <VirtualHost *:8080> ServerName dev ServerAlias *.dev CustomLog "/Users/owen/Sites/logs/dev-access_log" combinedmassvhost ErrorLog "/Users/owen/Sites/logs/dev-error_log" VirtualDocumentRoot /Users/owen/Sites/%2/httpdocs </VirtualHost> 

我相信这种方式的工作(很可能是错误的),如果你想象你有一个像一个URL

environment.project.dev – Apache通过. 给你

 $0 = environment.project.dev $1 = environment $2 = project $3 = dev 

由于project是你想加载的文件夹,你只需要引用$2variables,让我一起

  VirtualDocumentRoot /Users/owen/Sites/%2/httpdocs 

这将加载在上面的示例/Users/owen/Sites/project/httpdocs

这样做的好处之一是允许你在你的主机文件或DNS级别

 192.168.1.50 matt.project.dev 192.168.1.51 emily.project.dev 192.168.1.52 shaun.project.dev 

那么您可以轻松地查看其他人的网站版本。