35

すべての外部URLは「module/action?key1=param1」のようになります。カスタマイズはできませんが、高速です。違いは、最初はPHPのGETを使用し、2番目はPATH_INFOを使用することです。

私はPATH_INFO何度か見たことがありますが、それが正確に何であるかはまだわかりません。それは何をするためのものか?

4

2 に答える 2

47

実際にPATH_INFOは、PHP自体ではなく、PHPページを提供するApacheWebサーバーに関連しています。

PATH_INFOAcceptPathInfoディレクティブがオンになったときにApacheによって設定される環境変数です。要求が受け入れられるか拒否されるかにかかわらず、既存のディレクトリ内の実際のファイル名または存在しないファイルに続く末尾のパス名情報が含まれます。次に、環境変数は、ページのレンダリングを担当するApache/CGIモジュールに渡されます。

変数は、PHPで。を使用してアクセスできます$_SERVER['PATH_INFO']

たとえば、場所/test/が単一のファイルのみを含むディレクトリを指していると仮定しますhere.html。次に、リクエスト/test/here.html/more/test/nothere.html/more両方がとして収集/moreされPATH_INFOます。

Apacheコアドキュメント:AcceptPathInfoディレクティブ

于 2010-02-14T17:19:41.433 に答える
22

変数PATH_INFOはCGIの定義の一部であるため、そこも確認する必要があります;)

PATH_INFO変数は、CGIスクリプトによって解釈されるパスを指定します。これは、CGIスクリプトによって返されるリソースまたはサブリソースを識別し、スクリプト自体を識別する部分に続くURIパス階層の部分から派生します。URIパスとは異なり、PATH_INFOはURLエンコードされておらず、パスセグメントパラメータを含めることはできません。「/」のPATH_INFOは、単一のvoidパスセグメントを表します。

 PATH_INFO = "" | ( "/" path )
 path      = lsegment *( "/" lsegment )
 lsegment  = *lchar
 lchar     = <any TEXT or CTL except "/">

https://www.rfc-editor.org/rfc/rfc3875#section-4.1.5

于 2012-02-17T08:32:08.990 に答える