diff --git a/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php b/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php
index 8a89cd474cb232de5b782abcc891b18ff7d984c9..825dd95d61058b15a2ddf0fe6ed5e4cf189771ca 100644
--- a/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php
+++ b/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php
@@ -58,7 +58,13 @@ class SiteBaseRedirectResolver implements MiddlewareInterface
         if ($site instanceof Site && !($language instanceof SiteLanguage)) {
             if ($routeResult instanceof SiteRouteResult && $routeResult->getTail() === '') {
                 $language = $site->getDefaultLanguage();
-                return new RedirectResponse($language->getBase(), 307);
+                if ($language->isEnabled()) {
+                    return new RedirectResponse($language->getBase(), 307);
+                }
+                // Default language is disabled, check for the first (enabled) language in list to redirect to that
+                foreach ($site->getLanguages() as $language) {
+                    return new RedirectResponse($language->getBase(), 307);
+                }
             }
             return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
                 $request,
diff --git a/typo3/sysext/frontend/Tests/Unit/Middleware/SiteBaseRedirectResolverTest.php b/typo3/sysext/frontend/Tests/Unit/Middleware/SiteBaseRedirectResolverTest.php
index 50d7385f8c2de71d585804837c4e7536476f7c05..b05636722ce46a81e752425b6fba99a0e763076f 100644
--- a/typo3/sysext/frontend/Tests/Unit/Middleware/SiteBaseRedirectResolverTest.php
+++ b/typo3/sysext/frontend/Tests/Unit/Middleware/SiteBaseRedirectResolverTest.php
@@ -301,4 +301,80 @@ class SiteBaseRedirectResolverTest extends UnitTestCase
         $response = $subject->process($request, $this->siteFoundRequestHandler);
         self::assertEquals(200, $response->getStatusCode());
     }
+
+    /**
+     * @test
+     */
+    public function useDefaultLanguageIfNoLanguageIsGiven(): void
+    {
+        $incomingUrl = 'https://twenty.one/';
+        $site = new Site('random-site', 13, [
+            'base' => 'https://twenty.one/',
+            'languages' => [
+                0 => [
+                    'languageId' => 0,
+                    'locale' => 'en_US.UTF-8',
+                    'base' => '/en/'
+                ],
+                1 => [
+                    'languageId' => 1,
+                    'locale' => 'fr_FR.UTF-8',
+                    'base' => '/fr'
+                ],
+                2 => [
+                    'languageId' => 2,
+                    'locale' => 'fr_CA.UTF-8',
+                    'base' => '/fr_ca'
+                ]
+            ]
+        ]);
+
+        $routeResult = new SiteRouteResult(new Uri($incomingUrl), $site);
+        $request = new ServerRequest($incomingUrl, 'GET');
+        $request = $request->withAttribute('site', $site);
+        $request = $request->withAttribute('routing', $routeResult);
+
+        $subject = new SiteBaseRedirectResolver();
+        $response = $subject->process($request, $this->siteFoundRequestHandler);
+        self::assertEquals('https://twenty.one/en/', $response->getHeader('Location')[0]);
+    }
+
+    /**
+     * @test
+     */
+    public function useFirstAvailableLanguageIfDefaultLanguageIsNotEnabledAndLanguageIsGiven(): void
+    {
+        $incomingUrl = 'https://twenty.one/';
+        $site = new Site('random-site', 13, [
+            'base' => 'https://twenty.one/',
+            'languages' => [
+                0 => [
+                    'languageId' => 0,
+                    'enabled' => false,
+                    'locale' => 'en_US.UTF-8',
+                    'base' => '/en/'
+                ],
+                1 => [
+                    'languageId' => 1,
+                    'enabled' => false,
+                    'locale' => 'fr_FR.UTF-8',
+                    'base' => '/fr'
+                ],
+                2 => [
+                    'languageId' => 2,
+                    'locale' => 'fr_CA.UTF-8',
+                    'base' => '/fr_ca'
+                ]
+            ]
+        ]);
+
+        $routeResult = new SiteRouteResult(new Uri($incomingUrl), $site);
+        $request = new ServerRequest($incomingUrl, 'GET');
+        $request = $request->withAttribute('site', $site);
+        $request = $request->withAttribute('routing', $routeResult);
+
+        $subject = new SiteBaseRedirectResolver();
+        $response = $subject->process($request, $this->siteFoundRequestHandler);
+        self::assertEquals('https://twenty.one/fr_ca', $response->getHeader('Location')[0]);
+    }
 }