- putenv(sprintf2("PATH_INFO=%s", rest));
- putenv(sprintf2("SCRIPT_NAME=%s", url));
+ if(*rest)
+ putenv(sprintf2("PATH_INFO=/%s", rest));
+ else
+ putenv("PATH_INFO=");
+ name = url;
+ /* XXX: This is an ugly hack (I think), but though I can think
+ * of several alternatives, none seem to be better. */
+ if(*rest && (strlen(url) > strlen(rest)) &&
+ !strcmp(rest, url + strlen(url) - strlen(rest)) &&
+ (url[strlen(url) - strlen(rest) - 1] == '/')) {
+ name = sprintf2("%.*s", (int)(strlen(url) - strlen(rest) - 1), url);
+ }
+ putenv(sprintf2("SCRIPT_NAME=%s", name));