web-dev-qa-db-ja.com

2つ(またはそれ以上)のApache VirtualHostをサブディレクトリで区切ることはできますか?

これは簡単な質問だと思いますが、もっと詳しく説明させてください。私は次の開発環境を持っています:

  • Ubuntu Server 12.04 LTS;
  • Apache 2.4;
  • PHP 5.5;

すべてが正常に機能していますVirtualHost構成を除く。 DrupalとWordpressの2つのアプリケーションをデプロイしたいと思います。各アプリケーションには独自のディレクトリがあります。例:

  • Drupal:/ l/disk0/drupal/public_html;
  • Wordpress:/ l/disk0/wordpress/public_html;

デフォルトのサイトでは、VirtualHost構成はドキュメントルートとして/ var/wwwを指します。 このデフォルトサイト構成を無効にしますそして2つのVirtualHostを作成したいと思います。1つはDrupal用、もう1つはWordpress用です。

ただし、これは開発環境であり、ここにはドメインがありません。私は多くのサイトを検索し、多くのチュートリアルを見つけました。それらはすべて、ドメインでこれを行う方法を説明していますが、サブディレクトリでは説明していません。

構成を行うと、アプリケーションにアクセスするためのURLは次のようになります。

 - http://example.com/wordpress;
 - http://example.com/drupal;

私はすでにこのVirtualHostで試しています:

<VirtualHost *:80>
        ServerName example.com
        ServerAdmin [email protected]
        DocumentRoot /l/disk0/site/public_html

        <Directory />
                AllowOverride None
        </Directory>

        Alias /site /l/disk0/site/public_html
        <Directory /l/disk0/site/public_html>
                Options MultiViews Indexes Includes FollowSymLinks ExecCGI
                AllowOverride All
                Require all granted
                allow from all
        </Directory>

        RewriteEngine On
        LogLevel warn
        ErrorLog "/l/disk0/site/logs/Apache/site/error.log"
        CustomLog "/l/disk0/site/logs/Apache/site/access.log" combined
        SSLProxyEngine on
</VirtualHost>

動作しませんでした。

1
Ricardo Giaviti

VirtualHostは、サイトごとに個別のドメイン名を設定する場合に使用されます。 Apacheは、使用する仮想ホストを選択するときに、URLのドメイン名の部分を調べます。したがって、その部分が同じである場合、VirtualHostsを使用して分割できないことを意味します。

2つの選択肢があります。

  • 個別のホスト名を使用します。例: drupal.example.comおよびwordpress.example.com の代わりに example.com/drupalおよびexample.com/wordpress

  • 別の方法を使用して、2つのサイトを分離します。

前者の場合、VirtualHost構成を保持しますが、それぞれのServerNameを変更します。

後者の場合、VirtualHost構成を削除し、代わりに次のようなことを行います。

    Alias /drupal /l/disk0/drupal/public_html
    <Directory /l/disk0/drupal/public_html>
            Options MultiViews Indexes Includes FollowSymLinks ExecCGI
            AllowOverride All
            Require all granted
            allow from all
    </Directory>

    Alias /wordpress /l/disk0/wordpress/public_html
    <Directory /l/disk0/wordpress/public_html>
            Options MultiViews Indexes Includes FollowSymLinks ExecCGI
            AllowOverride All
            Require all granted
            allow from all
    </Directory>
6
Jenny D