*) The Location: response header field, used for external
redirect, *must* be an absoluteURI. The Redirect directive
tested for that, but RedirectMatch didn't -- it would allow
- almost anything through. Now it, too, will correctly varf
- if the redirection target isn't an absoluteURI. [Ken Coar]
+ almost anything through. Now it will try to turn an abs_path
+ into an absoluteURI, but it will correctly varf like Redirect
+ if the final redirection target isn't an absoluteURI. [Ken Coar]
Changes with Apache 2.0.31
APACHE 2.0 STATUS: -*-text-*-
-Last modified at [$Date: 2002/01/31 19:54:53 $]
+Last modified at [$Date: 2002/01/31 20:38:07 $]
Release:
apr-util, etc.
Message-ID: <20020116000226.GA15991@ebuilt.com>
- * mod_alias redirections are issuing invalid Location:
- response header fields (they're not absoluteURI values).
-
RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
* Modify the worker MPM so that it doesn't need to create and
#include "ap_config.h"
#include "httpd.h"
+#include "http_core.h"
#include "http_config.h"
#include "http_request.h"
#include "http_log.h"
if ((ret = try_alias_list(r, dirconf->redirects, 1, &status)) != NULL) {
if (ap_is_HTTP_REDIRECT(status)) {
+ if (ret[0] == '/') {
+ char *orig_target = ret;
+
+ ret = ap_construct_url(r->pool, ret, r);
+ ap_log_rerror(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, 0, r,
+ "incomplete redirection target of '%s' for "
+ "URI '%s' modified to '%s'",
+ orig_target, r->uri, ret);
+ }
if (!ap_is_url(ret)) {
status = HTTP_INTERNAL_SERVER_ERROR;
ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, r,
"cannot redirect '%s' to '%s'; "
- "target is not a valid absoluteURI",
+ "target is not a valid absoluteURI or abs_path",
r->uri, ret);
}
else {