apache / vhosts如何指定在127.0.0.1加载的项目

我在我的Mac电脑上运行MAMP,并有许多项目。 我为所有的vhostconfiguration使用一个httpd-vhosts.conf 。 在我的一个应用程序中,我需要将第三方APIredirect到我的应用程序127.0.0.1/[route] 。 我的虚拟主机文件将第一个项目映射到127.0.0.1 ,这不一定是我要redirect到的项目。

我希望能够从localhost127.0.0.1后缀项目名称访问任何项目,但它只映射到虚拟主机文件中的第一个项目。 所以暂时的解决办法是注释掉除了我现在要使用的项目之外的所有项目,并重新启动apache; 不是很好的解决scheme。

所以我想我的问题是如何启用多个项目使用127.0.0.1/project_name /项目名称或类似。

这里有几个选项:

选项1)使用下面的所有项目设置一个单独的vhost文档根目录。 所以你需要设置/ Users / jared / projects /,然后为每个项目(/ Users / jared / projects / project-a,/ Users / jared / projects / project-b等)指定一个目录。 然后在Apache中,你会创build一个这样的虚拟主机:

 <VirtualHost 127.0.0.1:80> ServerName localhost DocumentRoot /Users/jared/projects <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /Users/jared/projects/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 

任何特定的项目设置都必须通过每个项目目录中的.htaccess文件完成。 这是最不常见的维护types,但可能有缺点。

选项2)为每个项目设置不同的虚拟主机,并使用/ etc / hosts文件来设置域名。 为此,您将拥有一个如上例所示的文件结构,然后在/ etc / hosts文件中添加以下行:

 127.0.0.1 project-a 127.0.0.1 project-b 

然后在你的虚拟主机configuration你会有这个:

 <VirtualHost 127.0.0.1:80> ServerName project-a DocumentRoot /Users/jared/projects/project-a <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /Users/jared/projects/project-a/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> <VirtualHost 127.0.0.1:80> ServerName project-b DocumentRoot /Users/jared/projects/project-b <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /Users/jared/projects/project-b/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 

这个设置可以让你在每个虚拟主机块中拥有不同的configuration,并且每个虚拟主机也添加独特的日志logging。 这样做的缺点是,对于每个新项目,您都需要在/ etc / hosts和vhostconfiguration中进行设置。