[解決済み] PHP_SELF vs PATH_INFO vs SCRIPT_NAME vs REQUEST_URI
質問
CodeIgniterでPHPアプリケーションを構築しています。CodeIgniterはすべてのリクエストをメインコントローラーに送ります。
index.php
. しかし、私は
index.php
をURIに入れるのは好きではありません。例えば
http://www.example.com/faq/whatever
は
http://www.example.com/index.php/faq/whatever
. 私は、スクリプトがそのアドレスが何であるかを知るための信頼できる方法を必要としています。私はこれまで
mod_rewrite
CodeIgniterのドキュメントにあるように。
ルールは以下の通りです。
RewriteEngine on
RewriteCond $1 !^(images|inc|favicon\.ico|index\.php|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
通常であれば、ただ単に
php_self
をチェックしますが、この場合は常に
index.php
. から取得することができますね。
REQUEST_URI
,
PATH_INFO
などがありますが、どれが一番信頼できるのか決めかねています。どなたか、PHP_SELF
,
PATH_INFO
,
SCRIPT_NAME
そして
REQUEST_URI
? ご協力ありがとうございました。
ノート : SOがアンダースコアを見て、なぜか斜体にしてしまうので、スペースを追加する必要がありました。
更新 : スペースを修正しました。
どのように解決するのですか?
この PHP ドキュメント を見れば、その違いがわかります。
'PHP_SELF'です。
現在実行中のスクリプトのファイル名で、ドキュメントルートからの相対パス。例えば $_server['php_self'] です。 というアドレスのスクリプトでは http://example.com/test.php/foo.bar とすると /test.php/foo.bar . また __FILE__ 定数には、現在の(すなわちインクルードされた)ファイルのフルパスとファイル名が含まれます。PHP がコマンドラインプロセッサとして動作している場合、この変数には PHP 4.3.0 以降のスクリプト名が格納されます。以前は利用できませんでした。
'SCRIPT_NAME'
<ブロッククオート現在のスクリプトのパスが含まれています。これは、自分自身を指す必要があるページのために有用である。また __FILE__ 定数は、現在の (すなわち、インクルードされた) ファイルのフルパスとファイル名を含みます。
'REQUEST_URI'
<ブロッククオートこのページにアクセスするために指定されたURI、例えば '/index.html' .
PATH_INFO はドキュメント化されていないようです...。
関連
-
[解決済み] ERR_INVALID_CHUNKED_ENCODING エラーの修正方法を教えてください。
-
[解決済み] 負の配列サイズ例外
-
[解決済み] HTTPの "Host "ヘッダーとは何ですか?
-
[解決済み] HTTPステータスコード0 - Error Domain=NSURLErrorDomain?
-
[解決済み] HTTP DELETE リクエストにエンティティボディは許されますか?
-
[解決済み] ブラウザのCookieドメインはどのように機能するのですか?
-
[解決済み] ブラウザの「F5」や「Ctrl + F5」によるリフレッシュはどのようなリクエストを発生させるのでしょうか?
-
[解決済み] なぜCSRF防止トークンをクッキーに入れるのが一般的なのですか?
-
[解決済み】URI、URL、URNの違いは何ですか?[重複] URIとURLとURNの違いは何ですか?
-
[解決済み】HTTP1.1とHTTP2.0の違いは何ですか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] リバースルーティングとは何ですか?
-
[解決済み] Preflightとredirectを使用したCORSリクエスト: 不許可になりました。回避策は?
-
[解決済み] Firefoxで突然「Blocked loading mixed active content」問題が発生したのはなぜですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】cURLを使用してBasic HTTP認証を正しく定義する方法は?
-
[解決済み】http:// のリンクを全て // に変更することは可能ですか?
-
[解決済み】Accept* HTTPヘッダのq=0.5とは何ですか?
-
[解決済み】HTTP1.1とHTTP2.0の違いは何ですか?[クローズド]
-
[解決済み] HTTPヘッダーの設定
-
[解決済み] Cache-Control: privateとは何ですか?