150人のユーザーのためのWebページをホストしたいです。各ユーザーにはURLを介して独自のWebページがありますurl/username/index.html
。ここユーザー名すべてのユーザーに一意であり、他のすべては普遍的です。
それでは、Apache Serverに150の仮想ホストを作成する必要がありますか、それとも別の方法がありますか?
答え1
ユーザー固有のWebディレクトリを有効にできます。mod_userディレクトリどの地図
http://example.com/~username/index.html
そのファイルに
/home/username/public_html/index.html
デフォルトはユーザーディレクトリです。
チルダを削除するには、Apacheの書き換えエンジンを使用し、esで始まるすべてのURLへのアクセスを無効にし、esを~
使用してAlias
個々のパスをユーザーディレクトリにマップできます。
VirtualHost 構成に以下を追加します。
RewriteEngine On
# forbid URLs starting with /~
RewriteRule ^/~ - [F]
# map individual paths to user dirs
Alias /bart /home/bart/public_html
Alias /homer /home/homer/public_html
Alias /lisa /home/lisa/public_html
Alias /maggie /home/maggie/public_html
# ...
esでファイルを提供する必要がない場合は、150 esの代わりにDocumentRoot
1を使用できます。AliasMatch
Alias
# map all paths to user dirs
AliasMatch ^/([^/]+)(/.*)?$ /home/$1/public_html$2
有効にする必要があり、サーバー上でmod_userdir
Debianから再起動してこれを行うことができます。mod_rewrite
a2enmod
sudo a2enmod userdir rewrite
sudo service apache2 restart
答え2
これを区別するには別のホスト名(またはポート)が必要なため、仮想ホストではこれを行うこともできません。
これは、さまざまなユーザーのサブディレクトリがある1つのホストにすぎません。したがって、各サブディレクトリに対して異なるファイル権限を設定する必要があるかもしれません(または少なくともそれをやろうとするかもしれません)。