httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Lewis <...@joe-lewis.com>
Subject Re: [Module Dev] Sending http request
Date Thu, 17 Jan 2008 15:01:58 GMT
karim Bendadda wrote:
> Hi All;
>
> I tried this
>
> *request_rec *subr = ap_sub_req_lookup_uri(url, r, NULL);
> apr_table_set( subr->headers_out, "Location", url );
> ap_log_rerror( APLOG_MARK, APLOG_ERR, 0,r, "sub request status:
> %i",subr->status );
> ap_run_sub_req(subr);*
>
> I have the following error:
>
> *[Thu Jan 17 07:11:25 2008] [error] [client 10.75.197.168] File does not
> exist: /usr/local/apache2/htdocs/my_module*
>
> I think because the external server is not on the same site..I read the
> paragraph 6.3 Diverting a Request: The internal redirect ...I think there is
> no external redirect for http requests...
> Any suggestion please??
>   

That error and assumption are correct.  As Ray stated, the 
ap_sub_req_lookup_uri only works if the URI is on the local server's 
apache.  (It is a URI vs. URL concept - the URI does not include the 
http://servername piece of the URL.)

Instead, try a simple :

r->filename = apr_pstrcat(r->pool, "proxy:", url, NULL);
return 1;

(this example was stolen from mod_rewrite, which was the only core 
module that I was aware of that included a "send to proxy" command).  
Just set the URL to what the client would have been grabbing if it was 
redirected to the right page.  For example, if the client is trying to 
get the page http://corvette.sharktooth.org/status.html , the resulting 
line would be :

url = apr_pstrdup(r->pool,"http://corvette.sharktooth.org/status.html");
r->filename = apr_pstrcat(r->pool, "proxy:", url, NULL);
return 1;

(this could also be shortened - what the three lines do are 1) get/set 
the URL, which should be set in your case already, 2) preface the URL 
with "proxy:", which is an indicator to proxy the request elsewhere, and 
3) allow apache to handle the rest of the request).

Try it and let us know if that works for you.

Joe
-- 
Joseph Lewis <http://sharktooth.org/>
"Divide the fire, and you will sooner put it out." - Publius Syrus

Mime
View raw message