Apache HTTP サーバ バージョン 2.4

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.4 > How-To / チュートリアル

# ユーザ毎のウェブディレクトリ

この日本語訳はすでに古くなっている 可能性があります。 最近更新された内容を見るには英語版をご覧下さい。

複数のユーザのいるシステムでは、`UserDir` ディレクティブを使って 各ユーザがホームディレクトリにウェブサイトを構築できるように設定することが 可能です。URL `http://example.com/~username/` を訪れた人は "`username`" というユーザの `UserDir` ディレクティブで指定された サブディレクトリからコンテンツを得ることになります。

in the default config file, and adapting the `httpd-userdir.conf` file as necessary, or by including the appropriate directives in a `Directory` block within the main config file.

デフォルトではこれらのディレクトリへのアクセスは許可されていません。 `UserDir` を使って有効にできます。 有効にするには、デフォルトの設定ファイルで付随する `httpd-userdir.conf` ファイルが必要で、 その中の次の行のコメントアウトを外して有効にするか、

`#Include conf/extra/httpd-userdir.conf`

あるいは、メインの設定ファイル中の `Directory` ブロックの中に適切にディレクティブを記述しておきます。

### 参照

- URL からファイルシステムへのマッピング

## ユーザ毎のウェブディレクトリ

関連モジュール | 関連ディレクティブ
--- | ---
`mod_userdir` | `UserDir` `DirectoryMatch` `AllowOverride`

## UserDir を使ってファイルのパスを設定する

`UserDir` ディレクティブは ユーザ毎のコンテンツが読み込まれるディレクトリを指定します。 このディレクティブはいろいろ違った形式を取ることができます。

スラッシュで始まらないパスが与えられたときは、ユーザのホームディレクトリ からの相対パスとみなされます。次の設定があったときに:

    UserDir public_html

URL `http://example.com/~rbowen/file.html` は パス `/home/rbowen/public_html/file.html` へ 変換されます。

パスがスラッシュで始まるときは、ディレクトリパスはそのパスに ユーザ名を加えたものからなります。次の設定のとき:

    UserDir /var/html

URL `http://example.com/~rbowen/file.html` は パス `/var/html/rbowen/file.html` へ変換されます。

アスタリスク (*) を含むパスが指定されたときは、アスタリスクを ユーザ名で置換したものが使用されます。このような設定だと:

    UserDir /var/www/*/docs

URL `http://example.com/~rbowen/file.html` は パス `/var/www/rbowen/docs/file.html` へ変換されます。

ディレクトリやディレクトリパスを複数設定することもできます。

    UserDir public_html /var/html

`http://example.com/~rbowen/file.html` という URL に対しては `~rbowen` を探します。見つからなければ、 `/var/html` の下にある `rbowen` を探します。 もし見つかれば上記の URL は `/var/html/rbowen/file.html` というファイルパスに変換されます。

## 外部 URL にリダイレクトする

`UserDir` ディレクティブを使って外部 URL にリダイレクトすることもできます。

    UserDir http://example.org/users/*/

上記例では `http://example.com/~bob/abc.html` へのリクエストは `http://example.org/users/bob/abc.html` にリダイレクトされます。

## この機能を使用できるユーザを制限する

UserDir のドキュメントに示されている構文を使うことで、 どのユーザがこの機能を使うことができるかを制限することができます:

`UserDir enabled
UserDir disabled root jro fish`

上の設定は `dissabled` 文のユーザ以外のすべてのユーザに 対して UserDir の機能を有効にします。同様にして、以下のように 数名のユーザ以外に対してこの機能を無効にすることもできます:

          UserDir disabled

          UserDir enabled rbowen krietz

他の例は `UserDir` の説明を参照してください。

## ユーザ毎の CGI ディレクトリ

それぞれのユーザに専用の cgi-bin ディレクトリを与えるために、 `<Directory>` を使ってユーザのホームディレクトリの指定された領域に対して CGI を有効に することができます。

    <Directory /home/*/public_html/cgi-bin/>
        Options ExecCGI
        SetHandler cgi-script
    </Directory>

そして、`UserDir` が `public_html` に設定されていると仮定すると、 そのディレクトリの CGI プログラム `example.cgi` は以下の様に呼び出されることができます:

`http://example.com/~rbowen/cgi-bin/example.cgi`

## ユーザによる設定変更を許可

ユーザに彼らのウェブ空間でのサーバの設定の変更を許可する場合、 ユーザは `.htaccess` ファイルを使って設定を変更する必要があります。 `AllowOverride` の値を ユーザが変更することを許可したいディレクティブに対して十分なものに 設定していることを確認してください。この機能がどのようにして動作しているか の詳細は .htaccess チュートリアル を読んで ください。