我在我的 mac book 上运行 MAMP,并且有许多项目。我为所有 vhost 配置使用一个httpd-vhosts.conf
。在我的一个应用程序中,我需要将第三方 API 重定向到我的应用程序127.0.0.1/[route]
。我的 vhosts 文件正在映射第一个项目,但127.0.0.1
它不一定是我想要重定向到的项目。
我希望能够从项目名称localhost
或127.0.0.1
以项目名称为后缀访问任何项目,但它只映射到 vhost 文件中的第一个项目。因此,临时解决方案是注释掉除我当前想要使用的项目之外的所有项目,然后重新启动 apache;这不是一个好的解决方案。
所以我想我的问题是如何才能启用多个项目127.0.0.1/project_name
或类似项目。
答案1
您有以下几种选择:
选项 1) 设置一个 vhost 文档根目录,所有项目都位于其下。因此,您需要设置 /Users/jared/projects/,然后在其下为每个项目(/Users/jared/projects/project-a、/Users/jared/projects/project-b 等)设置一个目录。然后在 apache 中,您将创建一个 vhost,如下所示:
<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 文件进行。这是最不需要持续维护的设置类型,但可能会有缺点。
选项 2) 为每个项目设置不同的 vhost,并使用 /etc/hosts 文件设置域名。为此,您将拥有一个类似于上述示例的文件结构,然后在 /etc/hosts 文件中添加以下行:
127.0.0.1 project-a
127.0.0.1 project-b
然后在你的 vhost 配置中你会看到以下内容:
<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>
此设置允许您在每个 vhost 块中拥有各种配置,并为每个 vhost 添加唯一日志。缺点是,对于每个新项目,您都需要在 /etc/hosts 和 vhost 配置中进行设置。