Laravel’de public klasörünün adını değiştirme

Özellikle paylaşımlı hostingerde sorun çıkaran public klasörünün konumu ve adı nasıl değiştirilir.

Laravelin varsayılan klasör hiyerarşisi şu sekildedir:

/
/app
/bootstrap
/config
/database
/public
/index.php
/resources
/routes
/storage

burada ki public klasörünü nasıl public_html olarak değiştirirsiniz.

İlk olarak ./server.php dosyasından public klasörünün konumunu değiştiriniz.

if ($uri !== '/' && file_exists(__DIR__.'/public_html'.$uri)) {
return false;
}

require_once __DIR__.'/public_html/index.php';

Sonrasında ./app/Providers/AppServiceProvider.php dosyasından bu klasörü bildirmeniz uygulamaya bildirmelisiniz. Bunun için register fonksiyonunun içerisinde alttaki kod bloğunu ekleyin.

public function register()
{
$this->app->bind('path.public', function() {
return base_path('public_html');
});

}

Tasarım için ./webpack.mix.js dosyasına public klasörünü belirlemeli ve derlenecek dosyaların konumlarını girmelisiniz.

mix
.setPublicPath('public_html')
.js('resources/js/app.js', 'public_html/js')
.sass('resources/sass/app.scss', 'public_html/css');

Dikkat: Jetstream kurduğunuzda webpack.mix.js dosyası değiştirileceği için kurulumu yaptıktan sonra bu işlemleri yapınız.

Son olarak public klasörünü public_html olarak yeniden adlandırın.

Opsiyonel: ./config/filesystems.php içerisinden storage konumunu ve sembolik link konumunu değiştirin:

'public' => [
'driver' => 'local',
'root' => storage_path('app/public_html'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],


'links' => [
public_path('storage') => storage_path('app/public_html'),
],

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store