我目前在我的 vhost 配置中有以下内容可以运行,但是我想修改它。
目前我的虚拟主机配置如下
<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>
因此这会自动路由,urlhttp://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
启用这个自动虚拟主机的正确方法吗?
谢谢
答案1
经过反复试验并解密 apache 文档后,我发现这就像- 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
您要加载的文件夹一样,您只需要引用变量$2
,然后
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
然后您就可以轻松查看其他人的网站版本。