Ahh, very interesting. I actually did want to use a full url with scheme and host.
What we wanted was a response of type HTTP_UNAUTHORIZED with a Location header as well as the other headers I added. But, perhaps that's not a reasonable thing to want, and we can provide a URI to a page on the same server. -M On May 28, 2011, at 2:31 PM, Torsten Förtsch wrote: > On Saturday, May 28, 2011 21:10:14 Matisse Enzer wrote: >> $r->custom_response( HTTP_UNAUTHORIZED, $uri ); >> return HTTP_UNAUTHORIZED > > Make sure $uri does not contain the hostport part. It must start with a > slash. The next lines are from modules/http/http_request.c: > > /* > * Two types of custom redirects --- plain text, and URLs. Plain text has > * a leading '"', so the URL code, here, is triggered on its absence > */ > > if (custom_response && custom_response[0] != '"') { > > if (ap_is_url(custom_response)) { > /* > * The URL isn't local, so lets drop through the rest of this > * apache code, and continue with the usual REDIRECT handler. > * But note that the client will ultimately see the wrong > * status... > */ > r->status = HTTP_MOVED_TEMPORARILY; > apr_table_setn(r->headers_out, "Location", custom_response); > } > else if (custom_response[0] == '/') { > [...] > r->method_number = M_GET; > ap_internal_redirect(custom_response, r); > return; > > I think you want to enter the "else if" branch. > > Further, make sure the document that is redirected to ends in a > Apache2::Const::OK. > > Torsten Förtsch > > -- > Need professional modperl support? Hire me! (http://foertsch.name) > > Like fantasy? http://kabatinte.net