PHPで http://localhost/test.php/http://hoge.jp というパスで実行した場合、_SERVER["PATH_INFO"]に入っているのは /http:/hoge.jp とスラッシュ続いてる部分は1つに圧縮されて困ってます。

/http://hoge.jpとして取得したいのですが、どうすれば良いですか?
Apache/2.2.4 (Win32)とPHP 5.2.1を利用しています。
なお、レンタルサーバーのxreaでは期待通りに取得できたので設定がおかしいのだと思うのですが…

回答の条件
  • 1人2回まで
  • 登録:2007/06/10 12:24:39
  • 終了:2007/06/12 00:02:17

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/06/10 23:09:52

ポイント35pt

URL自体を変えられるなら、

http://localhost/test.php/http:%2f%2fhoge.jp

でどうですか?

id:ysog

解答ありがとうございます。

なるべく入力元データに制約を設けたくないので

その方法は避けたいです。

PerlでもPATH_INFOの値を調べたのですがPHPと同様の結果でした。

Apache2が原因の主体の様な気がします。

2007/06/11 09:06:36
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/06/11 21:48:14

ポイント35pt

入力元データに制約を設けたくないので

捉え方の違いになりますが、パラメーターをURLエンコーディングしているだけなので、制約があるとは自分は考えません。


それはともかく、PATH_INFO を設定しているのは Apache なので、当然 Apache で対応する事になります。

直接試せていないのですがおそらくAllowEncodedSlashes ディレクティブで挙動が変わると思いますが、いかがでしょうか?

core - Apache HTTP サーバ

id:ysog

http://img.simpleapi.net/small/http://www.google.co.jp/

SimpleAPIのように単純に後ろにURLをくっつけるようにしたいのです。

「URLエンコーディングしないとちゃんと動作しないよ」

という風にはしたくなかったのです。

あと今試したのですが、URLエンコーディングしても連続したスラッシュは1つにまとめられてしまいました。

なのでPATH_INFOから値を取るのは諦めました。

REQUEST_URIからSCRIPT_NAMEを除いたものをPATH_INFO代わりに使おうと思います。

では、これで質問を終了したいと思います。

ありがとうございました。

2007/06/12 00:00:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません