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