web-dev-qa-db-ja.com

Apache動的エイリアス

複数のプロジェクトに使用するVM)にLAMPセットアップがあります。ドキュメントルートは/ wwwであり、その中にプロジェクトごとにフォルダーを作成します。

/www/project1-name/
/www/project2-name/

私は次のようにブラウザでそれらにアクセスします:

http://dev.vm/project-name/

Htaccessファイルとインデックスファイルをプロジェクト内のパブリックフォルダーに移動して、本番環境のセットアップとより正確に一致させたいと思います。

/www/project-name/public/

...ただし、上記と同じURLでアクセスします。各プロジェクトのドキュメントルートとしてパブリック/フォルダーを検索するようにApacheを構成するにはどうすればよいですか?

注:プロジェクトごとにホストと仮想ホストのエントリを作成して独自のドキュメントルートを作成できることは理解していますが、それを回避しようとしています-リモートサーバーで同様の設定を使用してサブドメインに複数のプロジェクトを収容する予定があるためです「デモ」と呼ばれます。

3
Atticus Finch

Mod_aliasをさらに一歩進めて、 AliasMatch ディレクティブを使用します。 EightbitTonyのソリューションと同じように機能するはずですが、追加の正規表現パワーを提供します。

私は少しテストをしました、そしてこれはそれがそれをするべきであるように見えます。

AliasMatch ^/([a-zA-Z0-9_-]+)/(.*) /www/$1/public/$2
3
kashani

書き直したくないと思います。古き良きAliasステートメントが欲しいだけではありませんか?

から http://httpd.Apache.org/docs/2.0/mod/mod_alias.html

Description: Maps URLs to filesystem locations
Syntax:      Alias URL-path file-path|directory-path
Context:     server config, virtual Host
Status:      Base
Module:      mod_alias

そう、

Alias /project-name/  /some/path/to/project-name/public/
Alias /project-name2/ /some/path/to/project-name2/public/
Alias /project-3/     /another/totally/different/path/public/
1
EightBitTony

Apache 動的に構成された大規模仮想ホスティング ドキュメントをご覧ください。膨大な数の仮想ホストがあるようには思えないので、VirtualDocumentRootと関連する構成ディレクティブはおそらくあなたが望むことをするでしょう。

 VirtualDocumentRoot /www/%2/public

これは/www/project-name/publicにマップされます。 %nパラメータはURLから 補間 で、%0が全体、%1が最初の部分などです。

1
user9517