Apache 如何将所有*.dev路由到vagrant box上的子文件夹

Apache 如何将所有*.dev路由到vagrant box上的子文件夹,apache,vagrant,vhosts,virtual-hosts,Apache,Vagrant,Vhosts,Virtual Hosts,我希望每个*.dev主机都将路由到我的流浪机器/var/www/vhosts/*.dev/public,例如,我的本地开发环境project1.dev位于/var/www/vhosts/project1.dev/public 因此,当我将一个新的(子)项目添加到我的框中时,我不需要更改config.yaml(通过puphpet.com安装的Vagrant)并重新加载机器 在我的计算机上,我在/private/etc中的hosts文件中添加了以下内容: 192.168.56.101 *.dev

我希望每个
*.dev
主机都将路由到我的流浪机器
/var/www/vhosts/*.dev/public
,例如,我的本地开发环境
project1.dev
位于
/var/www/vhosts/project1.dev/public

因此,当我将一个新的(子)项目添加到我的框中时,我不需要更改config.yaml(通过puphpet.com安装的Vagrant)并重新加载机器

在我的计算机上,我在
/private/etc
中的hosts文件中添加了以下内容:

192.168.56.101 *.dev
在我的虚拟机上,我将
/etc/apache2/sites enabled
中的
10-default_vhosts80.conf
更改为:

# ************************************
# Vhost template in module puppetlabs-apache
# Managed by Puppet
# ************************************

<VirtualHost *:80>
  ServerName default

  ## Vhost docroot
  DocumentRoot "/var/www/default"

  ## Directories, there should at least be a declaration for /var/www/default

  <Directory "/var/www/default">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
  </Directory>

  ## Load additional static includes

  ## Logging
  ErrorLog "/var/log/apache2/default_vhost_80_error.log"
  ServerSignature Off
  CustomLog "/var/log/apache2/default_vhost_80_access.log" combined

  ## Custom fragment
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/default/$1
</VirtualHost>
<VirtualHost *.dev:80>
    ServerName dev
    VirtualDocumentRoot /var/www/vhosts/%0
</VirtualHost>
#************************************
#apache模块中的Vhost模板
#傀儡管理
# ************************************
服务器名默认值
##Vhost docroot
DocumentRoot“/var/www/default”
##目录中,至少应该有/var/www/default的声明
选项索引跟随符号链接多视图
不允许超限
要求所有授权
##负载附加静态包括
##伐木
ErrorLog“/var/log/apache2/default\u vhost\u 80\u error.log”
服务器签名关闭
CustomLog“/var/log/apache2/default\u vhost\u 80\u access.log”组合
##自定义片段
ProxyPassMatch^/(.\.php(/.*)$fcgi://127.0.0.1:9000/var/www/default/$1
服务器名开发
VirtualDocumentRoot/var/www/vhosts/%0

不幸的是,这不起作用。有什么想法吗?我是这方面的初学者。

不幸的是,主机文件不支持使用通配符。您必须手动定义每个要重定向的主机

另外,您的主机文件位于
/etc/hosts
最后,我使用它将所有
.localdev
域路由到127.0.0.1。请注意,我使用的是
.localdev
而不仅仅是
.dev
.local
,因为这似乎会导致问题(OS X 10.10),因为
.dev
是一个

然后,我通过创建并启用此站点来配置Apache:

<VirtualHost *:80>
  ServerAlias localhost *.localdev #wildcard catch all
  VirtualDocumentRoot /hosts/%1/public
  UseCanonicalName Off
  <Directory "hosts">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

ServerAlias localhost*.localdev#通配符全包
VirtualDocumentRoot/hosts/%1/public
UseCononicalName关闭
选项如下符号链接
允许超越所有
命令允许,拒绝
通融
(from:)

我使用了一个。这适用于Windows、MacOS和Linux。简单,不需要额外的软件。以下示例将所有
*.dev
流量路由到您的流浪者邮箱:

函数FindProxyForURL(url,主机){
if(dnsDomainIs(主机,.dev”)){
返回“PROXY 127.0.0.1:8080”;
}
返回“直接”;
}
需要时,用vagrant box的IP和Web服务器端口替换
127.0.0.1:8080
。将此文件存储在某个位置。您可以将其存储在本地,也可以让Vagrant box上的Web服务器托管该文件

Windows:查看如何在Windows上使用PAC文件

MacOS:查看如何在MacOS上使用PAC文件。您可以使用
file:///Users/username/path/to/proxy.pac


Linux:这取决于Linux,但我相信Linux用户将能够根据他们的具体情况使用谷歌搜索。

我将尝试添加通配符支持: