web-dev-qa-db-ja.com

apache / vhosts127.0.0.1でロードされるプロジェクトを指定する方法

私はMacBookでMAMPを実行しており、多くのプロジェクトがあります。すべての仮想ホスト構成に単一のhttpd-vhosts.confを使用します。私のアプリの1つで、サードパーティの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
Jared Eitnier

ここにはいくつかのオプションがあります。

オプション1)すべてのプロジェクトを下に配置して単一の仮想ホストドキュメントルートを設定します。したがって、/ Users/jared/projects /を設定し、その下に各プロジェクト(/ Users/jared/projects/project-a、/ Users/jared/projects/project-bなど)のディレクトリを設定します。次に、Apacheで次のような1つの仮想ホストを作成します。

<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>

この設定により、各仮想ホストブロックにさまざまな構成を設定できるだけでなく、仮想ホストごとに一意のログを追加することもできます。これの欠点は、新しいプロジェクトごとに、/ etc/hostsとvhost構成でセットアップを行う必要があることです。

1
meatflag