Apache module mod_alias

### Apache HTTP Server Version 1.3

# mod_alias モジュール

このモジュールは、ホストファイルシステム上のいろいろな違う場所を ドキュメントツリーにマップする機能と、 URL のリダイレクトを行なう機能を提供します。

ステータス: Base
ソースファイル: mod_alias.c
モジュール識別子: alias_module

## 概要

このモジュールのディレクティブはサーバにリクエストが到着したときに URL の操作や制御をすることを可能にします。`Alias` ディレクティブと `ScriptAlias` ディレクティブは URL とファイルシステムのパスをマップするために使用されます。これは `DocumentRoot` の下にないドキュメントをウェブのドキュメントツリーの一部として 送られるようにします。`ScriptAlias` ディレクティブにはマップ先のディレクトリが CGI スクリプトのみであることを示すという追加の効果があります。

`Redirect` ディレクティブはクライアントに違った URL に新しいリクエストを送るように指示します。これは、 リソースが新しい場所に移動したときによく使用されます。

URL を操作するためのより強力で柔軟なディレクティブ群は `mod_rewrite` モジュールにあります。

## ディレクティブ

- Alias
- AliasMatch
- Redirect
- RedirectMatch
- RedirectTemp
- RedirectPermanent
- ScriptAlias
- ScriptAliasMatch

## Alias ディレクティブ

構文: Alias URL-path file-path|directory-path
コンテキスト: サーバ設定ファイル、バーチャルホスト
ステータス: Base
モジュール: mod_alias

Alias ディレクティブはドキュメントをローカルファイルシステムの DocumentRoot 以外の場所に保管することを可能にします。Url-path (% が復号された) で始まるパスの URL は directory-filename で始まるローカルファイルにマップされます。

例:

> `Alias /image /ftp/pub/image`

http://myserver/image/foo.gif へのリクエストに対して、サーバは ファイル /ftp/pub/image/foo.gif を返します。

もし url-path の最後に / を書いたなら、サーバはエイリアスを展開するために最後の / を要求するということに注意してください。すなわち、`Alias /icons/ /usr/local/apache/icons/` というものを使用していると、 `/icons` という url はエイリアスされません。

エイリアスの行き先を含んでいる `<Directory>` セクションを追加する必要があるかもしれないことに注意してください。 エイリアスの展開は `<Directory>` セクションを調べる前に行なわれますので、 エイリアスの行き先の `<Directory>` セクションのみ 効果があります。 (しかし、`<Location>` セクションはエイリアスが処理される前に実行されますので、 こちらは適用されます。)

ScriptAlias も参照してください。

## AliasMatch

構文: AliasMatch regex file-path|directory-path
コンテキスト: サーバ設定ファイル、バーチャルホスト
ステータス: Base
モジュール: mod_alias
互換性: Apache 1.3 以降で使用可能

このディレクティブは Alias とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、 標準正規表現を利用します。ここで指定された正規表現と URL-path が合うかどうかを調べ、合う場合は括弧で囲まれたマッチを 与えられた文字列で置き換え、それをファイル名として使用します。例えば、 `/icons` ディレクトリを使用するようにする ためには以下のようなものが使用できます:

        AliasMatch ^/icons(.*) /usr/local/apache/icons$1

## Redirect ディレクティブ

構文: Redirect [status] URL-path URL
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_alias
互換性: ディレクトリと .htaccess のコンテキストは 1.1 以降のみ。Status 引数は Apache 1.2 以降。

Redirect ディレクティブは古い URL を新しいものへマップします。 新しい URL がクライアントに返されます。そして、 クライアントは新しいアドレスをもう一回取得しようとします。 URL-path (% が復号された) パスで始まるドキュメントへの すべてのリクエストは URL で始まる新しい (% が符号化された) URL へのリダイレクトエラーが返されます。

例:

> `Redirect /service http://foo2.bar.com/service`

クライアントは http://myserver/service/foo.txt へのリクエストを行なうと、代わりに http://foo2.bar.com/service/foo.txt をアクセスするように告げられます。

注意: 設定ファイル中の順番に関わらず、Redirect ディレクティブは Alias ディレクティブと ScriptAlias ディレクティブよりも優先されます。 また、.htaccess ファイルや <Directory> セクションの中で使われていたとしても、URL-path は相対パスではなく、絶対パスでなければなりません。

もし status 引数が与えられていなければ、リダイレクトは "temporary" (HTTP ステータス 302) になります。これはクライアントに リソースが一時的に移動したということを示します。Status 引数は 他の HTTP のステータスコードを返すために使用することができます:

permanent
  永久にリダイレクトをするステータス (301) を返します。 これはリソースが永久に移動したということを意味します。
temp
  一時的なリダイレクトステータス (302) を返します。これがデフォルトです。
seeother
  "See Other" ステータス (303) を返します。 これはリソースが他のもので置き換えられたことを意味します。
gone
  "Gone" ステータス (410) を返します。これはリソースが永久に 削除されたことを意味します。このステータスが使用された場合、 url 引数は省略されなければなりません。

Status の値にステータスコードを数値で与えることで 他のステータスコードも返すことができます。ステータスが 300 と 399 の間にある場合、url 引数は存在していなければいけません。 その他の場合は省略されていなければなりません。ただし、 ステータスは Apache のコードが知っているものである必要があります (http_protocol.c の関数 `send_error_response` を見てください)。

例:

        Redirect permanent /one http://example.com/two

        Redirect 303 /two http://example.com/other

## RedirectMatch

構文: RedirectMatch [status] regex URL
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_alias
互換性: Apache 1.3 以降で使用可能。

このディレクティブは Redirect とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、 標準正規表現を利用します。ここで指定された正規表現と URL-path が合うかどうかを調べ、合う場合は括弧で括られたマッチを 与えられた文字列で置き換え、それをファイル名として使用します。 たとえば、すべての GIF ファイルを別サーバの同様な名前の JPEG ファイルにリダイレクトするには、以下のようなものを使います:

        RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg

## RedirectTemp ディレクティブ

構文: RedirectTemp URL-path URL
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_alias
互換性: このディレクティブは Apache 1.2 以降でのみ使用可能

このディレクティブはクライアントに Redirect が一時的なものである (ステータス 302) ことを知らせます。 `Redirect temp` とまったく同じです。

## RedirectPermanent ディレクティブ

構文: RedirectPermanent URL-path URL
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_alias
互換性: このディレクティブは Apache 1.2 以降でのみ使用可能。

このディレクティブはクライアントに Redirect が永久的なもの (ステータス 301) であることを知らせます。 `Redirect premanent` と全く同じです。

## ScriptAlias ディレクティブ

構文: ScriptAlias URL-path file-path|directory-path
コンテキスト: サーバ設定ファイル、バーチャルホスト
ステータス: Base
モジュール: mod_alias

ScriptAlias ディレクティブは、対象ディレクトリに mod_cgi の cgi-script ハンドラで処理される CGI スクリプトがあることを示す以外は Alias ディレクティブと同じ振る舞いをします。URL-path (% が復号された) パスで 始まる URL はローカルのファイルシステムの フルパスである二番目の引数にマップされます。

例:

> `ScriptAlias /cgi-bin/ /web/cgi-bin/`

http://myserver/cgi-bin/foo へのリクエストに対してサーバはスクリプト /web/cgi-bin/foo を実行します。

## ScriptAliasMatch

構文: ScriptAliasMatch regex file-path|directory-path
コンテキスト: サーバ設定ファイル、バーチャルホスト
ステータス: Base
モジュール: mod_alias
互換性: Apache 1.3 以降で使用可能

このディレクティブは ScriptAlias とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、 標準正規表現を利用します。ここで指定された正規表現と URL-path が合うかどうかを調べ、合う場合は括弧で囲まれたマッチを 与えられた文字列で置き換え、それをファイル名として使用します。 例えば、標準の `/cgi-bin` を使用するようにするためには、以下のようなものを使います:

        ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1

### Apache HTTP Server Version 1.3