diff --git a/typo3/sysext/install/Classes/FolderStructure/DefaultFactory.php b/typo3/sysext/install/Classes/FolderStructure/DefaultFactory.php
index e682cddbbc0216e52782b6a243c61918037636af..97e9417065207666a32ecc25a96952380168e07a 100644
--- a/typo3/sysext/install/Classes/FolderStructure/DefaultFactory.php
+++ b/typo3/sysext/install/Classes/FolderStructure/DefaultFactory.php
@@ -98,6 +98,33 @@ class DefaultFactory
                             ],
                         ],
                     ],
+                    [
+                        'name' => 'typo3conf',
+                        'type' => DirectoryNode::class,
+                        'targetPermission' => $directoryPermission,
+                        'children' => [
+                            [
+                                'name' => 'ext',
+                                'type' => DirectoryNode::class,
+                                'targetPermission' => $directoryPermission,
+                            ],
+                            [
+                                'name' => 'l10n',
+                                'type' => DirectoryNode::class,
+                                'targetPermission' => $directoryPermission,
+                            ],
+                            [
+                                'name' => 'sites',
+                                'type' => DirectoryNode::class,
+                                'targetPermission' => $directoryPermission,
+                            ],
+                            [
+                                'name' => 'system',
+                                'type' => DirectoryNode::class,
+                                'targetPermission' => $directoryPermission,
+                            ],
+                        ],
+                    ],
                     $this->getFileadminStructure(),
                 ],
             ];
@@ -118,36 +145,6 @@ class DefaultFactory
                     'targetContentFile' => self::TEMPLATE_PATH . '/root-web-config',
                 ];
             }
-
-            if (!Environment::isComposerMode()) {
-                $structure['children'][] = [
-                    'name' => 'typo3conf',
-                    'type' => DirectoryNode::class,
-                    'targetPermission' => $directoryPermission,
-                    'children' => [
-                        [
-                            'name' => 'ext',
-                            'type' => DirectoryNode::class,
-                            'targetPermission' => $directoryPermission,
-                        ],
-                        [
-                            'name' => 'l10n',
-                            'type' => DirectoryNode::class,
-                            'targetPermission' => $directoryPermission,
-                        ],
-                        [
-                            'name' => 'sites',
-                            'type' => DirectoryNode::class,
-                            'targetPermission' => $directoryPermission,
-                        ],
-                        [
-                            'name' => 'system',
-                            'type' => DirectoryNode::class,
-                            'targetPermission' => $directoryPermission,
-                        ],
-                    ],
-                ];
-            }
         } else {
             // This is when the public path is a subfolder (e.g. public/ or web/)
             $publicPath = substr(Environment::getPublicPath(), strlen(Environment::getProjectPath()) + 1);
@@ -167,6 +164,11 @@ class DefaultFactory
                         $this->getTemporaryAssetsFolderStructure(),
                     ],
                 ],
+                [
+                    'name' => 'typo3conf',
+                    'type' => DirectoryNode::class,
+                    'targetPermission' => $directoryPermission,
+                ],
                 $this->getFileadminStructure(),
             ];
 
@@ -187,14 +189,6 @@ class DefaultFactory
                 ];
             }
 
-            if (!Environment::isComposerMode()) {
-                $publicPathSubStructure[] = [
-                    'name' => 'typo3conf',
-                    'type' => DirectoryNode::class,
-                    'targetPermission' => $directoryPermission,
-                ];
-            }
-
             $structure = [
                 // Note that root node has no trailing slash like all others
                 'name' => Environment::getProjectPath(),
diff --git a/typo3/sysext/install/Classes/Report/InstallStatusReport.php b/typo3/sysext/install/Classes/Report/InstallStatusReport.php
index 94117ce5ca2074bc735db6f0ac88b14c9a617762..c44c3c263269a6eed1ac1873b3f195929d2dc2c9 100644
--- a/typo3/sysext/install/Classes/Report/InstallStatusReport.php
+++ b/typo3/sysext/install/Classes/Report/InstallStatusReport.php
@@ -91,6 +91,7 @@ final class InstallStatusReport implements StatusProviderInterface
             $varPath . '/transient/' => 2,
             $varPath . '/charset/' => 2,
             $varPath . '/lock/' => 2,
+            $sitePath . '/typo3conf/' => 2,
             Environment::getLabelsPath() => 0,
             $sitePath . '/' . $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'] => -1,
             $sitePath . '/' . $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'] . '_temp_/' => 0,
@@ -99,8 +100,6 @@ final class InstallStatusReport implements StatusProviderInterface
         // Check for writable extension folder files in non-composer mode only
         if (!Environment::isComposerMode()) {
             $checkWritable[Environment::getExtensionsPath()] = 0;
-            $checkWritable[$sitePath . '/typo3conf/'] = 2;
-
         }
 
         foreach ($checkWritable as $path => $requirementLevel) {