Apache HTTP サーバ バージョン 2.2
This document refers to the 2.2 version of Apache httpd, which is no longer maintained. The active release is documented here. If you have not already upgraded, please follow this link for more information.
You may follow this link to go to the current version of this document.
説明: | ホストファイルシステム上のいろいろな違う場所を ドキュメントツリーにマップする機能と、 URL のリダイレクトを行なう機能を提供する |
---|---|
ステータス: | Base |
モジュール識別子: | alias_module |
ソースファイル: | mod_alias.c |
このモジュールのディレクティブはサーバにリクエストが到着したときに
URL の操作や制御をすることを可能にします。Alias
ディレクティブと ScriptAlias
ディレクティブは
URL とファイルシステムのパスをマップするために使用されます。これは
DocumentRoot
の下にないドキュメントをウェブのドキュメントツリーの一部として
送られるようにします。ScriptAlias
ディレクティブにはマップ先のディレクトリが CGI
スクリプトのみであることを示すという追加の効果があります。
Redirect
ディレクティブは
クライアントに違った
URL に新しいリクエストを送るように指示します。これは、
リソースが新しい場所に移動したときによく使用されます。
mod_alias
は簡単な URL 操作向けに設計されています。
より複雑な操作、クエリーストリングの操作には、mod_rewrite
で提供されるツールを使用してください。
様々なコンテキスト中での Alias や Redirect は他のディレクティブと
同じように標準の マージ規則 に
従って処理されます。ただし、(例えば <VirtualHost>
セクションの中のように) 複数の Alias や Redirect が
同じコンテキスト中に現れた場合は決まった順番で処理されます。
まず、Alias の前にすべての Redirect が処理されます。ですから、Redirect
か RedirectMatch
にマッチするリクエストには
Alias は決して適用されません。次に、Alias と Redirect が設定ファイル中の
順番に適用され、最初にマッチしたものが優先されます。
ですから、二つ以上のディレクティブが同じパスに適用されるときは、 すべてのディレクティブの効果を得るためにはより詳しいパスを先に書く 必要があります。例えば、次の設定は期待通りの動作をします:
Alias /foo/bar /baz
Alias /foo /gaq
しかし、上記の二つのディレクティブの順番が逆になると、
/foo
Alias
が
常に /foo/bar
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>
説明: | 正規表現を使って URL をファイルシステムの位置にマップする |
---|---|
構文: | AliasMatch regex
file-path|directory-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_alias |
このディレクティブは Alias
とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、
正規表現を利用します。
ここで指定された正規表現と URL のパス
が合うかどうかを調べ、合う場合は括弧で括られたマッチを
与えられた文字列で置き換え、それをファイル名として使用します。たとえば、
/icons
ディレクトリを使う
ためには以下のようなものが使用できます:
AliasMatch ^/icons(.*) /usr/local/apache/icons$1
説明: | クライアントが違う 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 のステータスコードを返すために使用することができます:
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
説明: | 現在の URL への正規表現のマッチにより 外部へのリダイレクトを送る |
---|---|
構文: | RedirectMatch [status] regex
URL |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_alias |
このディレクティブは Redirect
とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、
正規表現を利用します。
ここで指定された正規表現と URL-path
が合うかどうかを調べ、合う場合は括弧で括られたマッチを
与えられた文字列で置き換え、それをファイル名として使用します。
たとえば、すべての GIF ファイルを別サーバの同様な名前の JPEG
ファイルにリダイレクトするには、以下のようなものを使います:
RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg
説明: | クライアントが違う URL を取得するように外部への永久的な リダイレクトを送る |
---|---|
構文: | RedirectPermanent URL-path URL |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_alias |
このディレクティブはクライアントに Redirect が永久的なもの
(ステータス 301) であることを知らせます。
Redirect permanent
とまったく同じです。
説明: | クライアントが違う URL を取得するように外部への一時的な リダイレクトを送る |
---|---|
構文: | RedirectTemp URL-path URL |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_alias |
このディレクティブはクライアントに Redirect
が一時的なものである (ステータス 302) ことを知らせます。
Redirect temp
とまったく同じです。
説明: | 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
を実行します。
説明: | 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