0

.htaccess スクリプトがあります。

RewriteBase /
RewriteCond %{HTTP_HOST} ^([A-Z0-9-]+)\.stage-proxy\.com$ [NC]
RewriteRule ^(.*)$ /index.php/%1.com/$1 [L]

そして、私がブラウズするとき

http://google.stage-proxy.com/analytics

http://htaccess.madewithlove.beによると、インバウンド URL は

http://google.stage-proxy.com/index.php/google.com/analytics

しかし、php で $_SERVER 変数を参照しようとすると、常に次のように表示されます。

http://google.stage-proxy.com/analytics

htaccess が有効になっていることはわかっています (mod_rewrite モジュールがインストールされていて、allowOverride All がオンになっていることはわかっています)。どうしたの?.htaccess の知識に明らかな穴がありますか?

参考までに、ubuntu サーバー 13.04 を使用しています。それが本当に何かを変えるかどうかはわかりません。

4

1 に答える 1

0

ルールがループしていない理由がわからない場合はRewriteCond %{REQUEST_FILENAME} !-f、ループを防ぐようなものがなくても 500 内部エラーが発生するはずです。

とにかく、index.phpからのものである$_SERVER['PHP_SELF']必要があります。または、確認できます。/index.php/google.com/analytics$_SERVER['PATH_INFO]

$_SERVER ドキュメントによる

PHP_SELF : 現在実行中のスクリプトのファイル名 (ドキュメント ルートからの相対パス)。たとえば、アドレスのスクリプト内の $_SERVER['PHP_SELF']http://example.com/test.php/foo.bar/test.php/foo.bar. FILE定数には、現在の (つまり、インクルードされた) ファイルのフル パスとファイル名が含まれます。PHP がコマンドライン プロセッサとして実行されている場合、この変数には PHP 4.3.0 以降のスクリプト名が含まれます。以前は利用できませんでした。

PATH_INFO : 実際のスクリプト ファイル名の後にあるがクエリ文字列の前にあるクライアント提供のパス名情報が含まれます (利用可能な場合)。たとえば、現在のスクリプトが URL 経由でアクセスされた場合、http://www.example.com/php/path_info.php/some/stuff?foo=bar$_SERVER['PATH_INFO']含まれます/some/stuff

于 2013-06-22T22:36:29.290 に答える