diff --git a/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js b/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js
index 7d5c8438cb38330e976b523e50fab0b54b1644d1..1a3737c3833e3805c3894fadf1c2028ef2adce63 100644
--- a/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js
+++ b/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js
@@ -44,16 +44,16 @@ class GitLabRepoLoader {
   #validGitlabUrl() {
     const UrlPattern = require("url-pattern");
     const validPatterns = [
-      new UrlPattern("https\\://gitlab.com/(:projectId(*))", {
-        segmentValueCharset: "a-zA-Z0-9-._~%/+",
+      new UrlPattern("https\\://gitlab.com/(:author*)/(:project(*))", {
+        segmentValueCharset: "a-zA-Z0-9-._~%+",
       }),
       // This should even match the regular hosted URL, but we may want to know
       // if this was a hosted GitLab (above) or a self-hosted (below) instance
       // since the API interface could be different.
       new UrlPattern(
-        "(:protocol(http|https))\\://(:hostname*)/(:projectId(*))",
+        "(:protocol(http|https))\\://(:hostname*)/(:author*)/(:project(*))",
         {
-          segmentValueCharset: "a-zA-Z0-9-._~%/+",
+          segmentValueCharset: "a-zA-Z0-9-._~%+",
         }
       ),
     ];
@@ -64,9 +64,9 @@ class GitLabRepoLoader {
       match = pattern.match(this.repo);
     }
     if (!match) return false;
-    const [author, project] = match.projectId.split("/");
+    const { author, project } = match;
 
-    this.projectId = encodeURIComponent(match.projectId);
+    this.projectId = encodeURIComponent(`${author}/${project}`);
     this.apiBase = new URL(this.repo).origin;
     this.author = author;
     this.project = project;