私はローカルホスト上で正常に動作していた何かを設定している共有ホスティングサーバーで作業していますが、この動作の原因は何か不思議です。PHP PATH_INFOが書き換え後に設定されない
if(isset($_SERVER['PATH_INFO']))
{
echo $_SERVER['PATH_INFO'];
}
else
{
echo "No Path";
}
die;
がhttp://example.com/testing出力「いいえパス」
を訪問:私はデバッグ目的のために簡単なチェックを設定しているのindex.phpに
RewriteEngine On
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
#Redirect to front controller
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
:私はフロントコントローラにApacheとmod_rewriteの持つURLをリダイレクトしています 訪問http://example.com/index.php/testing出力/テスト
このリダイレクトはローカルホストで意図したとおりに動作していましたhttp://example.com/testing出力 "/ testing"
これを引き起こしている可能性があることは誰でも知っていますか?このリダイレクトを行う一般的な方法は、ホストからホストに発行される可能性は低いですか?
EDIT:それぞれ$_SERVER['PATH_INFO'], $_SERVER['ORIG_PATH_INFO'], $_SERVER['PHP_SELF'], $_SERVER['REQUEST_URI']
を出力
を示しています
path:
orig: /testing
self: /index.php
uri: /testing
どう処理はこれを引き起こすことが行われていますか? ORIG_PATH_INFOはより信頼できますか?また、REQUEST_URIも正確であるようですが、それはより適切な変数ですか?
はい、これはindex.php/$ 1にリダイレクトされています。これはhttp://example.com/index.php/testingになり、ファイル名の後ろに(存在しない)クエリ文字列。 –
しかし、ページはhttp://example.com/testingでアクセスされます(書き換えは内部的に行われます)。 – MasterCassim