When using server redirection, it is possible to specify a path
consisting of only one slash. While this is discouraged (risk of
loop) it may sometimes be useful combined with content switching.
The prefixing of a '/' then causes two slashes to be returned in
the response. So we now do as with the other redirects, don't
prepend a slash if it's alone.
if (rdr.len + s->srv->rdr_len > rdr.size)
return;
- memcpy(rdr.str + rdr.len, s->srv->rdr_pfx, s->srv->rdr_len);
- rdr.len += s->srv->rdr_len;
+ /* special prefix "/" means don't change URL */
+ if (s->srv->rdr_len != 1 || *s->srv->rdr_pfx != '/') {
+ memcpy(rdr.str + rdr.len, s->srv->rdr_pfx, s->srv->rdr_len);
+ rdr.len += s->srv->rdr_len;
+ }
/* 3: add the request URI */
txn = &s->txn;