• ベストアンサー

apacheのrequest_recについてです。

お世話になってます。 最近C言語でapache モジュールを触り始めました。 開幕躓いたので質問をしにきました。。。orz apache request_recについて質問です。 apacheのrequest_recからURLのプロトコルの部分を 取得するのは、可能でしょうか? request_recから「protocol」で「HTTP1.1」の ような値は取得できたのですが、実際に取得したいのは 「http://www.google.co.jp/」の「http」の部分です。 (できればURLすべて取得できたらうれしいです) どなたかご教授願えると助かります。

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

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

メンバー一覧見る限りでは「uri」か「unparsed_uri」が相当するんじゃないですか。 http://httpd.apache.org/dev/apidoc/apidoc_request_rec.html

mike219
質問者

お礼

とりあえずprotocolから取得する方法でがんばってみます… 回答ありがとうございました!(^q^)ノ

mike219
質問者

補足

回答ありがとうございます。 「uri」と「unparsed_uri」は、 両方試してみましたが、プロトコルの部分は取得できませんでした。 「uri」は、リクエストパラメータの部分、 「unparsed_uri」は、"http://"を除いたURLの部分が取得できるみたいです。 いただいたURLや↓ココのURLを試してみましたが、プロトコルを含めたURLは取得できなさそうです。 http://d.hatena.ne.jp/oasynnoum/20110117/1295276348 protocolから取得して変換して、URLを作るとかしないといけないのかな?(ん~かっこわるい)

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

なるほど, GET /hogehoge ってやるとこの行 (の /hogehoge の部分) だけをパーズするのか.... だとすると, 「スマートな方法」はないかもしれませんね. ... なんというか, request_rec が不親切なだけのようにも思えるけど....

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

答えてもらっても「じゃあこうしたら」と言えない質問をするのも心苦しいところではありますが一応念のため: 「parsed_uriを試してみました」 ってのは実際にはどんなことをしたんでしょうか?

mike219
質問者

お礼

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

mike219
質問者

補足

いえいえ、回答ありがとうございます。 「parsed_uriを試してみました」 ってのは実際にはどんなことをしたんでしょうか? →「r->parsed_uri」を試してみました。 rは、request_recです。 普通に取得して、表示をしてみただけですが。 ココ↓を見てみるとrequest_recには、「http://…」と 返してくれる変数がなさそうな気がします。 http://d.hatena.ne.jp/yone098/20090518/1242703019

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

全く無知なので役に立たないかもしれませんが, parsed_uri ってどんなもんでしょ?

mike219
質問者

お礼

回答ありがとうございます!

mike219
質問者

補足

回答ありがとうございます。 parsed_uriを試してみましたが「/T*****」(*は文字化けてました) のような値が帰ってきました。 PHPやPythonでは、parsed_uri()でやりたいことが、 バッチリできるみたいなんですけどね。 C言語ではないですが,PHPは連想配列に格納されているみたいですね。 PHPでは「http」、C言語では「HTTP/1.1」の違いが... 現状「HTTP/1.1」から「HTTP」の部分を取得して、 変換してurl文字列を作成していますが、納得はしてません   orz httpsやftpがうまくいけば、この方法で確定します。。。(う~ん、イケテナイ)

関連するQ&A