diff --git a/mongoose.c b/mongoose.c
index 86aaf4a..613daa4 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -3060,7 +3060,7 @@ static char *addenv(struct cgi_env_block *block, const char *fmt, ...) {
 static void prepare_cgi_environment(struct mg_connection *conn,
                                     const char *prog,
                                     struct cgi_env_block *blk) {
-  const char *s, *slash;
+  const char *s;
   struct vec var_vec;
   char *p, src_addr[20];
   int  i;
@@ -3088,11 +3088,10 @@ static void prepare_cgi_environment(struct mg_connection *conn,
 
   // SCRIPT_NAME
   assert(conn->request_info.uri[0] == '/');
-  slash = strrchr(conn->request_info.uri, '/');
   if ((s = strrchr(prog, '/')) == NULL)
     s = prog;
-  addenv(blk, "SCRIPT_NAME=%.*s%s", (int) (slash - conn->request_info.uri),
-         conn->request_info.uri, s);
+  addenv(blk, "SCRIPT_NAME=%.*s", (int) (strlen (conn->request_info.uri) - (conn->path_info ? strlen(conn->path_info) : 0)),
+         conn->request_info.uri);
 
   addenv(blk, "SCRIPT_FILENAME=%s", prog);
   addenv(blk, "PATH_TRANSLATED=%s", prog);
