RewriteEngine On
RewriteBase /

# Перенаправляем все запросы в папку public
RewriteCond %{REQUEST_URI} !^/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ public/$1 [L]

# Блокируем доступ к PHP файлам в папке uploads
RewriteCond %{REQUEST_URI} ^/uploads/
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.(php|phtml|phar|cgi|pl|py|asp|aspx|sh)$
RewriteRule .* - [F,L]

<FilesMatch "\.(env|htaccess|htpasswd|sql|bak|inc|log|md)$">
    Require all denied
</FilesMatch>

Options -Indexes

<IfModule mod_headers.c>
    Header set X-Content-Type-Options "nosniff"
    Header set X-Frame-Options "SAMEORIGIN"
    Header set X-XSS-Protection "1; mode=block"
</IfModule>