diff --git a/src/core/router/history/base.js b/src/core/router/history/base.js
index 268cbb1f4..352aa0f03 100644
--- a/src/core/router/history/base.js
+++ b/src/core/router/history/base.js
@@ -1,10 +1,10 @@
 import {
+  cleanPath,
   getPath,
   isAbsolutePath,
-  stringifyQuery,
-  cleanPath,
   replaceSlug,
   resolvePath,
+  stringifyQuery,
 } from '../util.js';
 import { noop } from '../../util/core.js';
 
@@ -32,11 +32,19 @@ export class History {
   }
 
   #getFileName(path, ext) {
-    return new RegExp(`\\.(${ext.replace(/^\./, '')}|html)$`, 'g').test(path)
-      ? path
-      : /\/$/g.test(path)
-        ? `${path}README${ext}`
-        : `${path}${ext}`;
+    const [basePath, query] = path.split('?');
+
+    const hasValidExt = new RegExp(`\\.(${ext.replace(/^\./, '')}|html)$`).test(
+      basePath,
+    );
+
+    const updatedPath = hasValidExt
+      ? basePath
+      : /\/$/g.test(basePath)
+        ? `${basePath}README${ext}`
+        : `${basePath}${ext}`;
+
+    return query ? `${updatedPath}?${query}` : updatedPath;
   }
 
   getBasePath() {
diff --git a/test/unit/router-history-base.test.js b/test/unit/router-history-base.test.js
index a486ed2db..58ff08246 100644
--- a/test/unit/router-history-base.test.js
+++ b/test/unit/router-history-base.test.js
@@ -66,4 +66,35 @@ describe('router/history/base', () => {
       expect(url).toBe('/README');
     });
   });
+
+  // getFile test
+  // ---------------------------------------------------------------------------
+  describe('getFile', () => {
+    // Tests
+    // -------------------------------------------------------------------------
+    test('path is url', () => {
+      const file = history.getFile('https://some/raw/url/README.md');
+
+      expect(file).toBe('https://some/raw/url/README.md');
+    });
+    test('path is url, but ext is .html', () => {
+      const file = history.getFile('https://foo.com/index.html');
+
+      expect(file).toBe('https://foo.com/index.html');
+    });
+    test('path is url, but with parameters', () => {
+      const file = history.getFile(
+        'https://some/raw/url/README.md?token=Mytoken',
+      );
+
+      expect(file).toBe('https://some/raw/url/README.md?token=Mytoken');
+    });
+    test('path is url, but ext is different', () => {
+      history = new MockHistory({ ext: '.ext' });
+
+      const file = history.getFile('https://some/raw/url/README.md');
+
+      expect(file).toBe('https://some/raw/url/README.md.ext');
+    });
+  });
 });