• ベストアンサー

$ENV{'REQUEST_URI'} の値を統一するには

先ほど気がついたのですが $ENV{'REQUEST_URI'} が ローカルと サーバー上で 扱いが違うので 統一したいと思います 設定を変更をするにはどうすればいいのでしょうか? .../abc.cgi?a=1 だとすると ローカルでは ?より前が返ってきます。  .../abc.cgi サーバーでは ?以降もいっしょに返ってきます・・・  .../abc.cgi?a=1 値が違うので。。。 常に?以降を切り取るようにすればいいかもしれないですが...... 簡単に設定で済む方法があればよろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

> $ENV{'REQUEST_URI'} = (split('??', $ENV{'REQUEST_URI'}))[0]; 連想配列%ENVへの書き込みが許されてない環境なのかも、 いったん別変数(ex. $req_uri=split...)に書き出す形にしてみては。

noname#21216
質問者

お礼

返信ありがとうございます。 書き方がわるかったのですみません。 $ENV には書き込み可能です $ENV{'REQUEST_URI'} = (split('\?', $ENV{'REQUEST_URI'}))[0]; で 同じ値になるようにとりあえず調整しています。

その他の回答 (2)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

質問を勘違いしてました。 ?以降ではなく、?の前だけが欲しいんですね。失礼しました。

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

真っ先に思いつくのは $ENV{'REQUEST_URI'} ではなく $ENV{'QUERY_STRING'} を参照した方がよいのではないかと。→参考URL $ENV{'REQUEST_URI'}にこだわるらその理由と、ローカル/サーバのサーバソフト(ApatchとかAnHttpd?)を補足してください。設定といってもサーバソフトによってできるかできないか、またその手段も異なると思いますので。

参考URL:
http://www.futomi.com/lecture/form/#s3
noname#21216
質問者

お礼

返信ありがとうございます サーバーは FreeBSD 4.10 Apache/1.3.33 (Unix) です。 ローカルは、windows+Anhttpdです。

noname#21216
質問者

補足

設定がわからないので プログラムの最初の方で 条件文で  サーバーにあるときは、切り取るようにしました。 $ENV{'REQUEST_URI'} = (split('\?', $ENV{'REQUEST_URI'}))[0];

関連するQ&A