
Ho creato il .htaccess
più figo, più incredibile, più abbagliante di tutti i tempi per Laravel.
Ok, basta con le esagerazioni. Mettiamoci un po’ seri per spiegarti quali problemi risolve.
Problema estetico
L'installazione predefinita di Laravel ti costringe a entrare nella cartella public/
per eseguire l'applicazione senza usare la CLI.
Ad esempio, per vedere la home page devi andare qui:
https://www.acitd.com/public/
Invece di qui:
https://www.acitd.com/
Problema di sicurezza
Un altro problemino è che se carichi l'applicazione “così com'è”, chiunque può scaricare i file che si trovano nella root del progetto, cosa che forse sicuramente non vuoi per motivi di sicurezza.
Quello che fanno di solito le applicazioni è distribuire i file della cartella public/
come se fossero nella root del progetto /
, mentre tutti gli altri file restano nascosti.
In Laravel c'è anche un'altra cartella pubblica: storage/app/public/
.
Nel caso non lo sapessi, ecco le differenze:
Cartella | Uso |
---|---|
public/ |
Qui metti i file pubblici statici, cioè quelli che crei tu durante lo sviluppo. |
storage/app/public/ |
Qui vanno i file pubblici dinamici, cioè quelli creati dall'applicazione (es. caricamenti). |
La soluzione .htaccess definitiva
Per risolvere tutti i problemi sopra, ho creato il .htaccess
definitivo super-mega per Laravel.
Segui i passi qui sotto e sarai a posto!
1. Inserisci questo file .htaccess
nella root del progetto /
:
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -d
RewriteRule ^ %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_URI} !^/storage/app/public/
RewriteCond %{DOCUMENT_ROOT}/storage/app/public%{REQUEST_URI} -f
RewriteRule ^ /storage/app/public%{REQUEST_URI} [QSA,L]
RewriteCond %{REQUEST_URI} !^/(public|storage/app/public)/
RewriteRule ^ /public%{REQUEST_URI} [QSA,L]
2. Inserisci questo file .htaccess
nella cartella storage/app/public/
:
storage/app/public/.htaccess
allow from all
Tutto qui!
Ora le uniche cartelle pubbliche sono quelle qui sotto, e i loro file appaiono come se fossero nella root /
:
public/
storage/app/public/
Inoltre ti sei liberato dell’odioso public/ dall’URL!
PS: I file che vuoi proteggere non devono essere messi in cache, così che il .htaccess
possa essere applicato.
E con questo è tutto… ora vai a farti un bel bagnetto visto che è arrivata l’estate :D
Scritto da: Umano
Tradotto da: AI