Cookbook > Apache_api

リクエストを元にURLを作る

By Hiroyuki OYAMA Fri Jun 20 19:16:11 2003

リクエストされたURLを元にhttp://example/path/to/file といった、スキーム、ホスト名、ポート番号、URIという完全なURLを作る方法。

答えはhttp_core.cに

配布や複数のホストで運用する前提のモジュールの場合、URIやホスト名をハードコーディングしては後々大変。リクエストに使われたホスト名やポート番号でURLを動的に整形すればその問題は回避できる。

URLを作成するために必要な
  • スキーム(http,https,ftp etc..)
  • ホスト名
  • ポート番号
  • URI
はそれぞれ
  • ap_http_method()
  • ap_get_server_name()
  • ap_get_server_port()
  • r->unparsed_uri
から取得できる。これらの組み合わせでも良いのだが、Apache module APIには一発で生成する手段が用意されている。
 char *url = ap_construct_url(r->pool, r->unparsed_uri, r);
これだけ。80/tcpや443/tcpなどデフォルトのポート番号の場合は省略もしてくれるので楽チン。mod_sslを組み込んでEAPIを有効にした場合はスキームの取得方法が少々変わって
 ((char *)ap_ctx_get((r)->ctx, "ap::http::method")) : "http")
になる。

Comments

Post a comment

Name:


URL:


Comments:


WebエンジニアのためのApacheモジュールプログラミングガイド

ApacheをHackする!
モジュールプログラミング強烈初体験!!
定価: 2,919円(税込)
ISBN: 4-7741-1799-4

hiroyuki_oyama IM status

Apache Users

Apache Modules

CPAN


Home > Cookbook > Apache_api > リクエストを元にURLを作る