[6] CGI のメタ変数 PATH_TRANSLATED は、 PATH_INFO を単独の URL とみなしたときに鯖の文書リポジトリーにおいて相当する位置を表します。
PATH_TRANSLATED
PATH_INFO
[7] 値の構文は次のように定義されています >>4。
PATH_TRANSLATED = *<any character>
[8] 認められている文字の集合はシステム定義です。 >>4
[16] Unix では NUL を除く任意の8ビット・バイトです。 >>18
NUL
[19] EBCDIC を使う POSIX 環境では NUL を除く IBM1047 です。 >>18
[10] 要求の URL を元に新たな URL <scheme> "://" <server-name> ":" <server-port> <extra-path>... を組み立てます。ここでscheme はクライアントとのプロトコルserver-name は SERVER_NAMEserver-port は SERVER_PORTextra-path は PATH_INFO を、 ;、 ?、= を予約してパーセント符号化したもの... とします。この時、鯖によって定義されている文書リポジトリー (ファイル・システム) との対応関係に従って当該システム上の path に変換した値を PATH_TRANSLATED とします。 >>4
<scheme> "://" <server-name> ":" <server-port> <extra-path>
scheme
server-name
SERVER_NAME
server-port
SERVER_PORT
extra-path
;
?
=
[11] 実際にどのような変換が行われるかは実装定義です。実際に変換結果が文書リポジトリー上に存在するかは問いません。 ただし文書リポジトリーが大文字と小文字を区別しない場合を除き、両者の違いを保存しなければなりません。 >>4
[12] 鯖は、PATH_INFO 部分が元の URL に含まれているなら、 PATH_TRANSLATED メタ変数も設定するべきです。 >>4
[13] PATH_INFO が NULL なら、 PATH_TRANSLATED も NULL (空文字列または未設定) でなければなりません。 >>4
[20] PATH_INFO の項を参照してください。
PATH_TRANSLATED is derived by taking any path-info component of the request URI (see section 6.1.6), decoding it (see section 3.1), parsing it as a URI in its own right, and performing any virtual-to-physical translation appropriate to map it onto the server's document repository structure. If the request URI includes no path-info component, the PATH_TRANSLATED metavariable SHOULD NOT be defined.
PATH_TRANSLATED は要求 URI (第6.1.6節参照)の path-info (経路情報) から取って、復号し (第3.1節参照)、 URI として解析し、 サーバーの文書庫構造に適切に対応させる仮想‐物理変換を施したもの です。要求 URI が path-info 部品を含んでいなければ、 PATH_TRANSLATED メタ変数は定義するべきではありません。
PATH_TRANSLATED = *CHAR
For a request such as the following:
http://somehost.com/cgi-bin/somescript/this%2eis%2epath%2einfo
the PATH_INFO component would be decoded, and the result parsed as though it were a request for the following:
上記のような要求で、 PATH_INFO 部品は復号され、 結果は次のような要求であるとして解析されます。
http://somehost.com/this.is.the.path.info
This would then be translated to a location in the server's document repository, perhaps a filesystem path something like this:
これはサーバーの文書庫の位置に変換されます。 このような感じのファイル系統経路になるでしょう。
/usr/local/www/htdocs/this.is.the.path.info
The result of the translation is the value of PATH_TRANSLATED.
変換の結果が PATH_TRANSLATED 値です。
The value of PATH_TRANSLATED may or may not map to a valid repository location. Servers MUST preserve the case of the path-info segment if and only if the underlying repository supports case-sensitive names. If the repository is only case-aware, case-preserving, or case-blind with regard to document names, servers are not required to preserve the case of the original segment through the translation.
PATH_TRANSLATED 値は妥当な文書庫の位置に対応していても していなくても構いません。サーバーは、文書庫が名前で大文字・小文字を 区別する場合においては、またその場合に限って、 path-info 部分の大文字・小文字を保存しなければなりません。 文書庫が、文書名について大文字・小文字を区別するだけ、保存するだけ、 あるいは区別しない時は、サーバーは変換を通じて元の部分の 大文字・小文字を保存する必要はありません。
The translation algorithm the server uses to derive PATH_TRANSLATED is implementation defined; CGI scripts which use this variable may suffer limited portability.
サーバーが PATH_TRANSLATED を得るのに使う変換算法は 実装定義です。この値を使う CGI スクリプトは移植性に制限を受ける かもしれません。
Servers SHOULD provide this metavariable to scripts if and only if the request URI includes a path-info component.
サーバーは、要求 URI が path-info 部品を含んでいる場合、 しかもその場合に限って、このメタ変数をスクリプトに提供するべきです。
Alias
Alias /bar/ /path/to/bar/
/bar/path/to/cgi/foo
[14] 元々はファイル・システム上のファイルをCGIスクリプトで何らかの形でフィルタリングしたものを返すことを想定していたのでしょう。 現在では PATH_INFO をそのように使うことはほとんど無く、従って PATH_TRANSLATED が使われることもほとんどないようです。
[15] Apache で SetHandler を使って CGIスクリプトを割り当てると、 元々の URL が指していたファイルが PATH_TRANSLATED の値となると記憶しています 要出典。
SetHandler