SCRIPT_NAME

メタ変数 SCRIPT_NAME (CGI)

[6] CGIメタ変数 SCRIPT_NAME は、 path の前半の CGIスクリプトを識別する部分を表します。

仕様書

[7] 値の構文は次のように定義されています >>5

      SCRIPT_NAME = "" | ( "/" path )

[8] ここでいう pathPATH_INFO の定義と同じです。 つまり、実質的に、 / ではじまる任意の文字列と言えます。

[9] SCRIPT_NAMECGIスクリプトを識別する URLpath (パーセント符号化されていないもの) を設定しなければなりません>>5 これの後に PATH_INFO を連結し (てパーセント符号化し) たものが、 CGIスクリプトによって処理される対象となっている資源を表す Script-URI を構成します。 PATH_INFO が存在しない場合、path 全体が SCRIPT_NAME となります。

[10] どこからどこまでが SCRIPT_NAME かは実装定義の方法により実装と設定次第で決まります。 しかし SCRIPT_NAMEPATH_INFO で重複する部分はありません >>5

[23] HTTP::Request::AsCGI は、常に PATH_INFO要求URLpath 全体とし、 SCRIPT_NAME/ とします。

NULL

[11] CGI では URL とは違って先頭の /path の一部では無いとされています。 pathNULLなら / は省略して良いこととなっています。 >>5

[12] >>11 の規定の意図するところはよくわかりませんが、 path 全体が PATH_INFO としてCGIスクリプトに与えられる場合、 SCRIPT_NAME/ のような値を設定すると / がだぶってしまい、 >>10 の重複しないという性質に反してしまいます。 SCRIPT_NAMENULLにすればこの不整合は回避できます。

[13] 実装は必ずしもそうなっていないと思いますが・・・。

[14] NULL の場合であっても、メタ変数は設定しなければなりません >>5

[15] >>14メタ変数一般の規定を上書きして SCRIPT_NAME に限っては未設定と空文字列を区別するという意図なのでしょうか。仕様書からはよくわかりません。

[17] WSGI とその派生仕様は、「」を表すために空文字列にしても良いと明記しています >>18, >>19, >>20, >>21

[22] PSGI は、

... と規定しています >>21

安全性

[16] PATH_INFO の項を参照してください。

歴史

[1] [NCSA] いわく:

A virtual path to the script being executed, used for self-referencing URLs.

実行されるスクリプトへの仮想経路で、 自己参照 URL に使われます。

[2] [COAR 03] いわく:

The SCRIPT_NAME metavariable is set to a URL path that could identify the CGI script (rather than the script's output). The syntax and semantics are identical to a decoded HTTP URL 'path' token (see RFC 2396 [4]).

SCRIPT_NAME メタ変数は、 CGIスクリプト (スクリプトの出力ではなく。) を識別することができる URL 経路が設定されます。 構文及び意味は HTTP URL の path 字句を復号したものと同一です。

  • SCRIPT_NAME = "" | ( "/" [ path ] )

The SCRIPT_NAME string is some leading part of the <path> component of the Script-URI derived in some implementation defined manner. No PATH_INFO or QUERY_STRING segments (see sections 6.1.6 and 6.1.8) are included in the SCRIPT_NAME value.

Servers MUST provide this metavariable to scripts.

SCRIPT_NAME 文字列は、実装定義の方法で Script-URI<path> 部品の最初のほうから取り出したものです。 PATH_INFOQUERY_STRING も、 SCRIPT_NAME 値には含めません。

サーバーはこのメタ変数をスクリプトに提供しなければなりません (MUST)。

メモ

[3] >>2 にあるように、この値は URI のものを復号した値であることに注意が必要です。ですから、必要に応じて再符号化しないと、 URI は作れません。