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

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

我在我的 mac book 上运行 MAMP,并且有许多项目。我为所有 vhost 配置使用一个httpd-vhosts.conf。在我的一个应用程序中,我需要将第三方 API 重定向到我的应用程序127.0.0.1/[route]。我的 vhosts 文件正在映射第一个项目,但127.0.0.1它不一定是我想要重定向到的项目。

我希望能够从项目名称localhost127.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 配置中进行设置。

相关内容