Apache 2.2 中的自动 vhost 文件夹

Apache 2.2 中的自动 vhost 文件夹

我目前在我的 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

然后您就可以轻松查看其他人的网站版本。

相关内容