Alex Costantino

Information Technology DevelopmentI.T. Development

🇬🇧️ 🇮🇹 EL

Το απόλυτο .htaccess για Laravel




Έφτιαξα το πιο γαμάτο, το πιο απίστευτο, το πιο εκθαμβωτικά αστραφτερό .htaccess όλων των εποχών για Laravel.

Εντάξει σταματάω με τις υπερβολές, και ας σοβαρευτούμε λιγάκι για να σου εξηγήσω ποια προβλήματα λύνει.

Πρόβλημα αισθητικής

Η προεπιλεγμένη εγκατάσταση του Laravel σε αναγκάζει να μπεις στον φάκελο public/ για να τρέξεις την εφαρμογή χωρίς CLI.

Για παράδειγμα, για να δεις την αρχική σελίδα πρέπει να πας εδώ:
https://www.acitd.com/public/

Αντί για εδώ:
https://www.acitd.com/

Πρόβλημα ασφαλείας

Ένα άλλο θεματάκι είναι πως αν ανεβάσεις την εφαρμογή έτσι «χύμα», οποιοσδήποτε μπορεί να κατεβάσει τα αρχεία που βρίσκονται στον root φάκελο του project, κάτι που μάλλον σίγουρα δεν θές για λόγους ασφαλείας.

Αυτό που κάνουν συνήθως οι εφαρμογές είναι να διαμοιράζονται τα αρχεία του φακέλου public/ λες και βρίσκονται στο root του project /, ενώ όλα τα υπόλοιπα αρχεία μένουν κρυφά.

Στο Laravel υπάρχει επίσης και ένας άλλος δημόσιος φάκελος, o storage/app/public/.

Σε περίπτωση που δεν το ξέρεις, εδώ είναι οι διαφορές τους:

Φάκελος Χρήση
public/ Εδώ βάζεις τα στατικά δημόσια αρχεία, δηλαδή που δημιουργείς εσύ κατά την ανάπτυξη της εφαρμογής.
storage/app/public/ Εδώ πάνε τα δυναμικά δημόσια αρχεία, δηλαδή που δημιουργούνται από την εφαρμογή (π.χ. uploads)

Η απόλυτη .htaccess λύση

Για να λύσουμε όλα τα παραπάνω θεματάκια, έφτιαξα λοιπόν το απόλυτο super-duper .htaccess για Laravel.

Ακολούθα τα παρακάτω βήματα και θα είσαι κομπλέ!

1. Βάλε αυτό το .htaccess αρχείο στον root φάκελο του project /:

.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. Βάλε αυτό το .htaccess αρχείο στον φάκελο storage/app/public/:

storage/app/public/.htaccess

allow from all

Αυτό ήταν!

Τώρα οι μόνοι δημόσιοι φάκελοι είναι οι παρακάτω, και τα αρχεία τους εμφανίζονται λες και βρίσκονται στο root /:

  • public/
  • storage/app/public/

Επίσης ξεφορτώθηκες το ενοχλητικό public/ από το URL!


BTW: τα αρχεία που θες να προστατέψεις θα πρέπει να μην cache-άρονται ώστε να εφαρμοστεί το .htaccess.


Αυτά λοιπόν.. τώρα πήγαινε κάνε ένα μπανάκι μιας που καλοκαίριασε :D


Γραμμένο από: Άνθρωπο
Μετάφραση από: AI