dポイントプレゼントキャンペーン実施中!

ApacheからPerlのCGIを以下の様に呼び出しています。
 ~/cgi-bin/abc.pl?URI=/test/start.html#5000

呼び出したPerl側で$ENV{'QUERY_STRING'}を使用して、
?以降のデータ部分を取り出すと、
 URI=/test/start.html
となってしまい「#5000」が欠落してしまいます。

「#5000」以下を欠落しなくする方法をご存じの方、
教えて頂けないでしょうか?

宜しくお願いします。

A 回答 (2件)

#1です。

Apacheでの、とかあまり難しく考えないで、
~/cgi-bin/abc.pl?URI=%2ftest%2fstart%2ehtml%235000
で大丈夫だと思います。(*)
CGIがデコード処理をサボっていると、CGIを改造しないといけませんが

* 適当に「エンコード」で検索したページで変換しました。
http://www.tagindex.com/tool/url.html
    • good
    • 0
この回答へのお礼

steel_gray様

教えて頂きありがとうございます。

"#"="%23"の変換で処理できました。
また、CGIのデコード処理についてもサボっていたので、
 my $uri = $ENV{'QUERY_STRING'};
 $uri =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
の様に修正しました。

Apacheの関数では出来ないのか、
もう少し調べてみます、何か解ったらUPします。

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

お礼日時:2008/10/22 15:35

「#」をエンコードしておく。


Perlに渡す時点ではフラグメントではなくクエリなので英数字と一部記号を除いてURLエンコードしておかないと。
    • good
    • 0
この回答へのお礼

steel_gray様
教えて頂きありがとうございます。
Apacheでのエンコード方法を調べて試してみます。
結果については解り次第UPします。
ありがとうございました。

お礼日時:2008/10/21 14:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!