]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
If the RedirectMatch target is an abs_path, make it an absoluteURI
authorKen Coar <coar@apache.org>
Thu, 31 Jan 2002 20:29:41 +0000 (20:29 +0000)
committerKen Coar <coar@apache.org>
Thu, 31 Jan 2002 20:29:41 +0000 (20:29 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@93142 13f79535-47bb-0310-9956-ffa450edef68

src/CHANGES
src/modules/standard/mod_alias.c

index 4e0f37621e494d79bbefb433c8bcc86db70d1fea..bbbcd2975156c9d04d1d25a3f2578dbb7ca8b8e1 100644 (file)
@@ -3,8 +3,9 @@ Changes with Apache 1.3.24
   *) 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]
 
   *) apxs: fix bug that prevented -S option from containing quotes.
      [Ben Laurie]
index f6ae1bcc5c8b4a4211d021ff7ea697f58d68225d..7d93b6bed385ec166c7794705bb43dfc4d629918 100644 (file)
@@ -393,11 +393,20 @@ static int fixup_redir(request_rec *r)
 
     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, 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, 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 {