APACHEのAcceptPathInfo命令の使用紹介

3950 ワード

zfdemoを学ぶ時AcceptPathInfo命令を設定することに言及します.
私たちは仮想静化をしたり、パスを綺麗に見せたりする時に見られます.http://www.example.com/index.php/html1このようなURLアドレスであり、実際に訪問するのはルートディレクトリ下のindex.phpファイルであり、httml 1をPATH_とする.INFO環境変数はスクリプトに渡されます.上記のアドレスが正しく動作するかどうかは、AcceptPathInfo命令の構成によって異なります.
AcctPathInfo指令
余分なパス名情報が添付されている要求を受け入れるかどうかを説明します.
文法AcceptPathInfo Off Default
デフォルト値Accept PathInfo Default
作用域server config,virtual host,directory,httaccess
カバー項目FileInfo
状態コア(C)
モジュール
互換性は、Appache 2.3.30以降のバージョンでのみ使用できます.
このコマンドは、実際のファイル名(または実在しないファイル)の後に、余分なパス名情報の要求を受け入れるかどうかを決定します.この余分なパス名情報はPATH_とすることができます.INFO環境変数はスクリプトに渡されます.
例えば、仮に/test/指しているディレクトリの下には一つのファイルしか含まれていないと仮定します.それでは、test/here.ore/moreと/test/nothere)/moreの要求はいずれもPATH_uを要求します.INFO環境変数を「/more」に設定します.
AcceptPathInfo命令の取得範囲:
Off
一つの要求が真の存在の経路にマッピングされた場合のみ、許容される.このように、上記/test/here.html/moreのように、真のファイル名の後にあるパス名の要求は、「404 NOT FOUND」エラーに戻ります.
On
プリアンブルパスが実在のファイルにマッピングされる限り、この要求は受け入れられる.このように、上記/test/here.が有効なファイルに写像されると、/test/here./moreに対する要求が受信されます.
Default
余分なパス名情報が付加された要求を受信するかどうかは、その対応するプロセッサによって決定される.通常のテキストに対応するコアプロセッサは、デフォルトではPATH_を拒否します.INFOサーボスクリプト用のプロセッサ、たとえばcgi-scriptとisapi-saは、デフォルトではPATH_を受け入れます.INFO
AcceptPathInfoコマンドが存在する主な目的は、PATH_を受け入れるかどうかについてプロセッサをカバーすることです.INFOのデフォルト設定.このカバーが必要です.たとえば、INCLUDESのようなフィルターを使ってPATH_によってINFOに内容が発生した場合.コアプロセッサは通常このような要求を拒否しますが、以下の構成でこのようなスクリプトを可能にします.
Options+Includies
SetOutput Filter INCLUDES
AcctPathInfo On
apphe 2.0以上のデフォルトはaccept pathinfoがないことです.
APACH 2.20以上のサーバーからaccept pathinfoを削除しました.必要なら、http.com nfにAccept PathInfo Onを追加する必要があります.元のものです
Options FollowSymLinks includes
AllowOverride None
せいにする
Options FollowSymLinks includes
AllowOverride None
AcctPathInfo On
このコマンドは、特定の確定ファイル(または既存のディレクトリの存在しないファイル)に含まれるパス情報を受け入れるかどうかを決定します.このパス情報はスクリプトの中でPATH_となります.INFO環境変数の形が現れます.
例えば、仮定/test/指しているディレクトリの下には一つのファイルしか含まれていません.じゃ、test/here)/moreと/test/nothere)/moreに対するお願いは全部もらいます.INFO変数
AcceptPathInfo命令の3つのパラメータは以下の通りです.
オフ
一つの要求が実在の経路にマッピングされた場合のみ、それは受け入れられる.このように、上記/test/here.html/moreのように、実際のファイル名の後に、パス名の要求に従うと、404 NOT FOUNDエラーが返されます.
オン
前のパスが実在のファイルにマッピングされた場合、この要求は受け入れられます.もし/test/here.が有効なファイルをマッピングしていたら、上の例では/test/here.1/moreこの要求は受け入れられます.
default
追加パス名の要求に対する処理は、その対応するプロセッサによって決定される.通常のテキストに対応するコアプロセッサは、デフォルトではPATH_を拒否します.INFOサーボスクリプト用のプロセッサ、たとえばcgi-scriptとisapi-saは、デフォルトではPATH_を受け入れます.INFO
PHPにおけるグローバル変数SERVER['PATHINFO']は有用なパラメータであり、多くのCMSシステムは自分のURLを美化する際に、このパラメータを使用しています.
以下のURLについて:
http://www.test.com/index.php/foo/bar.html?c=index&m=search
私たちは$を得ることができます.SERVER['PATHINFO'='/foo/bar]]は、この時$SERVER['QUERYuSTRING'='c=index&m=search';
通常、私たちは最初にPHPプログラムを作成する時に、例えば:http://www.test.com/index.php?c=search&m=main このようなURLは、非常に奇妙に見えるだけでなく、検索エンジンに対しても非常に不親切です.多くの検索エンジンが収録する時、Query String以降の内容を無視します.googleはQuery Stringを無視しませんが、他のQuery Stringを含まないページに対しては、比較的高いPR値を与えます.
次は解析PATH_です.INFOの非常に簡単なコード:
 
  
if( !isset( $_SERVER['PATH_INFO'] ) ){
$pathinfo = 'default';
}else{
$pathinfo = explode('/', $_SERVER['PATH_INFO']);
}
if( is_array($pathinfo) AND !empty($pathinfo) ){
$page = $pathinfo[1];
}else{
$page = 'a.php';
}
require "$page.php";
?>
phpファイル名の後に斜線「/」を付けて正常にアクセスできません.not foundエラーを報告します.
システムが壊れたら、システムを再インストールして、php環境を配置します.使っているソフトは以前のバージョンと同じです.
環境が整ったら、仕事項目は全部単一の入り口ファイルですので、index.phpファイルの後に斜線を入れてから入ることができます.システムを変えていない前にすべて訪問することができて、ソフトウェアのバージョンの問題を排除することができます.
仕事のプロジェクトに入りたいと思ったら、not foundを申し込みました.なぜですか?テスト後、phpファイル名の後に斜線「/」が正常にアクセスできないことが分かりました.
多くの人に聞いてみました.google度娘未果
会社のベテランのphpエンジニアを探しています.
apacheにはAcceptPathInfoというコマンドがあります.
appheのプロファイルにAcceptPathInfo onを追加すればOKです.