Apache HTTP サーバ バージョン 2.2

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.2 > モジュール

# Apache モジュール mod_alias

翻訳済み言語: en | ja | ko | tr

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

説明: | ホストファイルシステム上のいろいろな違う場所を ドキュメントツリーにマップする機能と、 URL のリダイレクトを行なう機能を提供する
ステータス: | Base
モジュール識別子: | alias_module
ソースファイル: | mod_alias.c

### 概要

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

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

`mod_alias` は簡単な URL 操作向けに設計されています。 より複雑な操作、クエリーストリングの操作には、`mod_rewrite` で提供されるツールを使用してください。

### トピック

- 処理の順番

### ディレクティブ

### 参照

- `mod_rewrite`
- URL からファイルシステム上の位置へのマッピング

- コメント

## 処理の順番

様々なコンテキスト中での Alias や Redirect は他のディレクティブと 同じように標準の マージ規則 に 従って処理されます。ただし、(例えば `<VirtualHost>` セクションの中のように) 複数の Alias や Redirect が 同じコンテキスト中に現れた場合は決まった順番で処理されます。

まず、Alias の前にすべての Redirect が処理されます。ですから、`Redirect` か `RedirectMatch` にマッチするリクエストには Alias は決して適用されません。次に、Alias と Redirect が設定ファイル中の 順番に適用され、最初にマッチしたものが優先されます。

ですから、二つ以上のディレクティブが同じパスに適用されるときは、 すべてのディレクティブの効果を得るためにはより詳しいパスを先に書く 必要があります。例えば、次の設定は期待通りの動作をします:

`Alias /foo/bar /baz
Alias /foo /gaq`

しかし、上記の二つのディレクティブの順番が逆になると、 `/foo` `Alias` が 常に `/foo/bar` `Alias` より先にマッチしますので、後者は 決して適用されることはありません。

## Alias ディレクティブ

説明: | URL をファイルシステムの位置にマップする
構文: | `Alias URL-path file-path|directory-path`
コンテキスト: | サーバ設定ファイル, バーチャルホスト
ステータス: | Base
モジュール: | mod_alias

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

### 例

`Alias /image /ftp/pub/image`

http://myserver/image/foo.gif へのリクエストに対して、サーバは ファイル /ftp/pub/image/foo.gif を返します。完全なパスセグメントが 一致した時にのみ働きますので、上の例は http://myserver/imagefoo.gif に対するリクエストにはマッチしません。正規表現を使ったより複雑な マッチングに関しては `AliasMatch` ディレクティブをご覧ください。

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

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

特に、`Alias` を `DocumentRoot` ディレクトリの外側に配置した場合は、行き先のディレクトリに対する アクセス権限を明示的に制限しなければならないでしょう。

### 例

`Alias /image /ftp/pub/image
<Directory /ftp/pub/image>
Order allow,deny
Allow from all
</Directory>`

## AliasMatch ディレクティブ

説明: | 正規表現を使って URL をファイルシステムの位置にマップする
構文: | `AliasMatch regex file-path|directory-path`
コンテキスト: | サーバ設定ファイル, バーチャルホスト
ステータス: | Base
モジュール: | mod_alias

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

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

## Redirect ディレクティブ

説明: | クライアントが違う URL を取得するように外部へのリダイレクトを 送る
構文: | `Redirect [status] URL-path URL`
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess
上書き: | FileInfo
ステータス: | Base
モジュール: | mod_alias

Redirect ディレクティブは古い URL を新しいものへマップして、 クライアントに新しい場所を訪れるように指し示します。

古い URL-path (% が復号された) パスは、 スラッシュで始まるものです。相対パスは使用できません。 新しい URL は絶対 URL 、つまりスキームとホスト名で 始まるものであるべきですが、URL-path の、スラッシュで始まるものも 使用可能です。その場合は、現在のスキームとホスト名が追加されたことに なります。

URL-Path で始まるどんなリクエストも、ターゲットの URL へとリダイレクトが返されます。URL-Path にマッチした path 情報は、ターゲット URL の後ろに追加された 形で引き継がれます。

### 例

`Redirect /service http://foo2.example.com/service`

クライアントは http://example.com/service/foo.txt へのリクエストを行なうと、代わりに http://foo2.example.com/service/foo.txt をアクセスするように告げられます。 パスセグメントが完全に一致したもののみがマッチしますので、 上記の例は http://example.com/servicefoo.txt にはマッチしません。 正規表現を使ったより複雑なマッチングについては、 `RedirectMatch` ディレクティブをご覧ください。

### 注意

設定ファイル中の順番に関わらず、 Redirect 系のディレクティブは Alias ディレクティブと ScriptAlias ディレクティブよりも優先されます。

もし 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 /three http://example.com/other`

## RedirectMatch ディレクティブ

説明: | 現在の URL への正規表現のマッチにより 外部へのリダイレクトを送る
構文: | `RedirectMatch [status] regex URL`
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess
上書き: | FileInfo
ステータス: | Base
モジュール: | mod_alias

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

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

## RedirectPermanent ディレクティブ

説明: | クライアントが違う URL を取得するように外部への永久的な リダイレクトを送る
構文: | `RedirectPermanent URL-path URL`
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess
上書き: | FileInfo
ステータス: | Base
モジュール: | mod_alias

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

## RedirectTemp ディレクティブ

説明: | クライアントが違う URL を取得するように外部への一時的な リダイレクトを送る
構文: | `RedirectTemp URL-path URL`
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess
上書き: | FileInfo
ステータス: | Base
モジュール: | mod_alias

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

## ScriptAlias ディレクティブ

説明: | URL をファイルシステムの位置へマップし、マップ先を CGI スクリプトに指定
構文: | `ScriptAlias URL-path file-path|directory-path`
コンテキスト: | サーバ設定ファイル, バーチャルホスト
ステータス: | Base
モジュール: | mod_alias

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

### 例

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

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

## ScriptAliasMatch ディレクティブ

説明: | URL を正規表現を使ってファイルシステムの位置へマップし、マップ先を CGI スクリプトに指定
構文: | `ScriptAliasMatch regex file-path|directory-path`
コンテキスト: | サーバ設定ファイル, バーチャルホスト
ステータス: | Base
モジュール: | mod_alias

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

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

翻訳済み言語: en | ja | ko | tr

## コメント

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.