RewriteEngine On

# Запрет прямого доступа к чувствительным каталогам
RewriteRule ^(app|config|storage|templates)(/|$) - [F,L]

# Запрет доступа к dot-файлам (.env и т.п.), кроме .well-known
RewriteRule ^(\.env|\.git|\.ht|.*\.(env|ini|conf))$ - [F,L,NC]
RewriteRule ^\.well-known/ - [L]

# Запрет доступа к логам, дампам и резервным файлам
RewriteRule (^|/)(error_log|.*\.log|.*\.sql|.*\.bak|.*\.old|.*\.save)$ - [F,L,NC]

# Отдаём всё из подкаталога public/
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^$ public/ [L]
RewriteRule ^(.+)$ public/$1 [L]