- ベストアンサー
$ENV{'REQUEST_URI'} の値を統一するには
先ほど気がついたのですが $ENV{'REQUEST_URI'} が ローカルと サーバー上で 扱いが違うので 統一したいと思います 設定を変更をするにはどうすればいいのでしょうか? .../abc.cgi?a=1 だとすると ローカルでは ?より前が返ってきます。 .../abc.cgi サーバーでは ?以降もいっしょに返ってきます・・・ .../abc.cgi?a=1 値が違うので。。。 常に?以降を切り取るようにすればいいかもしれないですが...... 簡単に設定で済む方法があればよろしくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> $ENV{'REQUEST_URI'} = (split('??', $ENV{'REQUEST_URI'}))[0]; 連想配列%ENVへの書き込みが許されてない環境なのかも、 いったん別変数(ex. $req_uri=split...)に書き出す形にしてみては。
その他の回答 (2)
- steel_gray
- ベストアンサー率66% (1052/1578)
質問を勘違いしてました。 ?以降ではなく、?の前だけが欲しいんですね。失礼しました。
- steel_gray
- ベストアンサー率66% (1052/1578)
真っ先に思いつくのは $ENV{'REQUEST_URI'} ではなく $ENV{'QUERY_STRING'} を参照した方がよいのではないかと。→参考URL $ENV{'REQUEST_URI'}にこだわるらその理由と、ローカル/サーバのサーバソフト(ApatchとかAnHttpd?)を補足してください。設定といってもサーバソフトによってできるかできないか、またその手段も異なると思いますので。
お礼
返信ありがとうございます サーバーは FreeBSD 4.10 Apache/1.3.33 (Unix) です。 ローカルは、windows+Anhttpdです。
補足
設定がわからないので プログラムの最初の方で 条件文で サーバーにあるときは、切り取るようにしました。 $ENV{'REQUEST_URI'} = (split('\?', $ENV{'REQUEST_URI'}))[0];
お礼
返信ありがとうございます。 書き方がわるかったのですみません。 $ENV には書き込み可能です $ENV{'REQUEST_URI'} = (split('\?', $ENV{'REQUEST_URI'}))[0]; で 同じ値になるようにとりあえず調整しています。