diff --git a/lib/transfer.c b/lib/transfer.c
index e90104aec156efcf70a9d7877183b12b12fb7321..ac178d1c191501fbc727e82be6ee476ac419ee07 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -1373,7 +1373,7 @@ CURLcode Curl_follow(struct SessionHandle *data,
       return CURLE_OUT_OF_MEMORY; /* go out from this */
 
     sprintf(newest, "%s%s%s", url_clone,
-            (('/' == useurl[0]) || !*protsep)?"":"/",
+            (('/' == useurl[0]) || (protsep && !*protsep))?"":"/",
             useurl);
     free(newurl); /* newurl is the allocated pointer */
     free(url_clone);