.htaccess
1.13 KB
RewriteEngine On
RewriteBase /
# Esconde a extensão .php: se alguém acessar /dashboard.php direto, redireciona
# pra /dashboard (sem expor o nome do arquivo em links/histórico).
RewriteCond %{THE_REQUEST} \s/+([^.\s]+)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L]
# Bloqueia acesso a qualquer coisa fora de public_html através de URL,
# mesmo sem rewrite (defesa extra, já que src/config/storage ficam um
# nível acima e não deveriam ser alcançáveis mesmo sem isso).
RewriteRule ^(src|config|storage|sql)(/|$) - [F,L]
# Roteia /algumacoisa para algumacoisa.php quando o arquivo existir e
# nenhum arquivo/diretório real com esse nome exista.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([a-zA-Z0-9_-]+)$ $1.php [L,QSA]
# Nunca serve .htaccess/.env ou outro arquivo de config por engano.
# (Options -Indexes não entra aqui de propósito: o AllowOverride do vhost
# não libera o contexto "Options", só FileInfo/AuthConfig/Limit -- colocar
# a diretiva aqui derrubaria o site com "Options not allowed here".)
<FilesMatch "^\.">
Require all denied
</FilesMatch>