Папка public для статики в Laravel
В прошлом уроке мы разобрали, что такое статические файлы и зачем они нужны сайту. Теперь важный практический вопрос: куда их класть в Laravel, чтобы браузер мог их открыть?
Blade-шаблоны лежат в resources/views/,
контроллеры - в app/. Эти папки
не предназначены для прямого доступа
из интернета. PHP-код и шаблоны должны
работать через Laravel, а не отдаваться
браузеру как обычные файлы.
Для статики в Laravel есть отдельная
папка public/. Это
веб-корень сайта - точка входа,
на которую смотрит веб-сервер.
Файл public/index.php запускает
Laravel, а всё остальное внутри
public/ браузер может запросить
напрямую.
Когда в адресной строке указан путь
/css/style.css, браузер ищет
файл от корня сайта - то есть в
public/css/style.css. Слово
public/ в URL не появляется:
папка скрыта от пользователя, но именно
от неё считаются все пути к статике.
То же правило работает для любого файла
внутри public/:
public/css/style.css → /css/style.css
public/js/script.js → /js/script.js
public/images/logo.png → /images/logo.png
Запись /css/style.css называется
относительным URL: в начале указан
слеш, но домен сайта не пишут.
Браузер сам подставит текущий хост -
тот, с которого открыта страница.
Полный адрес называют абсолютным URL.
Он состоит из протокола, домена, порта
и пути к файлу. Если проект открыт
как http://localhost, то
стиль из public/css/style.css
будет доступен по адресу:
http://localhost/css/style.css
Если Laravel запущен через
php artisan serve, адрес
может быть другим - например,
http://127.0.0.1:8000/css/style.css.
Путь после домена остаётся тем же:
/css/style.css.
Базовый URL всего приложения задаётся
в .env параметром
APP_URL. Его Laravel
подставляет, когда нужно собрать
полный адрес к статике. Пока запомним:
статику кладут в public/,
а в браузере путь начинается сразу
после домена. В следующем уроке
разберём, как удобно раскладывать
файлы по подпапкам.
Почему статические файлы кладут
в public/, а не в
resources/views/?
Какой относительный URL будет
у файла public/js/script.js?
Откройте в браузере
public/css/style.css
по его URL и убедитесь, что
страница загружается.