Laravel ile kodlamaya başladığımda ilk düşündüğüm laravelin yapısının paylaşımlı sunucuya uygun olup olmadığıydı. Aslında uygun olması sorun değil ille uydurulacak bir kısmı vardır fakat benim için önemli olan kolay bir şekilde uydurmaktı. Laravelin bu kolay adapte edilmesi çok hoşuma gitti. Daha sonra Laravelin adres yapısında bulunan public kısmı çok canımı sıkmaya başladı. Birkaç araştırmadan sonra nasıl kurtulacağımın yolunu buldum. Hem ilerde kullanmak için hemde sizlerinde faydalanması için ilk blogumda sizinle paylaşmak istiyorum.
İlk olarak yapmanız gereken “public” klasöründe yer alan herşeyi .htaccess dahil bir önceki klasöre yani ana dizine kopyalayın ve public klasörünü shift + del ile tamamen bilgisayarınızdan silin.
Daha sonra public klasöründen ana dizine kopyaladığınız “index.php” dosyasını açın ve genellikle 21. ve 35. satırlarda yer alan;
21. satırı
21 | require __DIR__.'/bootstrap/autoload.php'; |
35. satırı
35 | $app = require_once __DIR__.'/bootstrap/start.php'; |
olarak değiştirin.
index.php dosyasındaki bu 2 değişiklikten sonra “bootstrap” klasöründe bulunan “paths.php” dosyasının 29. satırında yer alan kısmı;
29 | 'public' => __DIR__.'/..', |
olarak değiştirin.
Tüm bu işlemlerden sonra adres satırındaki public kısmından kurtulmuş olacaksınız. Fakat güvenlik açığı oluşturmamak için laravel klasöründe yer alan app ve vendor klasörlerine dışarıdan erişimi engellemeniz lazım. Bunun için “.htaccess” dosyasından faydalanacağız. “.htaccess” dosyasına;
RewriteRule ^vendor($|/|/.*|./*) – [L,R=404] RewriteRule ^app($|/|/*|/.*) – [L,R=404] |
satırlarını ekleyerek bu sıkıntıdan da kurtulduk. Bu konuda daha kolay ve basit bir çözümü olan arkadaş paylaşırsa hepimiz faydalanmış oluruz. Blogumun ilk yazısında hatalarım olduysa affola…