Laravel 5.7 - CSS и JS не загружаются с использованием URL :: asset

Я новичок в Laravel. Я устанавливаю laravel 5.7 в своей локальной системе и помещаю js и css в общую папку, но при переходе по URL-адресу моего сайта в браузере сайт не загружает никакие css и js.

Структура сайта:

app
bootstrap
config
database
public
 -css
 -js
 -images
resources
 -views
    -includes
    -layouts
    -pages
routes
tests
vendor
index.php
server.php
.env

Примечание. Я вырезал файлы .htaccess и index.php и поместил их в корневой каталог для запуска сайта без общедоступного пути.

Вот как я называю url: CSS:

{{ URL::asset('css/style.css') }}

JS:

{{ URL::asset('js/query-1.11.1.min.js') }}

При просмотре исходного кода URL-адрес выглядит так:

http://localhost/mysite/css/style.css

Так может ли кто-нибудь помочь мне в этом вопросе?

Заранее спасибо.

Попробуйте использовать "{{asset ('css / custom.css')}}"

ErDiablo 12.12.2018 16:45

@Ankit Если вы все еще находитесь в режиме разработки, я не вижу причины, по которой вы ненавидите public в URL-адресе? Вы можете создать виртуальный хост на своей машине и начать писать код. Когда вы начнете работать, вы можете просто указать своим доменом саму общую папку. Таким образом, вы никогда не получите public в URL-адресе вашего домена.

nice_dev 12.12.2018 17:20

@ vivek_23 Спасибо за предложение. Теперь я снова помещаю .htaccess и index.php в общую папку, и теперь все работает. Еще раз спасибо.

Ankit 12.12.2018 17:31

@Ankit Добро пожаловать. Теперь, по соображениям безопасности, поместите все свои папки, кроме папки public, за пределы вашего public_html и отредактируйте public/index.php, указав правильный путь для $app и т. д.

nice_dev 12.12.2018 17:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
4
20 139
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

ДЛЯ JAVASCRIPT:

<script type = "text/javascript" src = "{{ URL::asset('js/query-1.11.1.min.js') }}"></script>

ДЛЯ CSS:

<link href = "{{ URL::asset('css/style.css') }}" rel = "stylesheet" type = "text/css" >

ЗАМЕТКА: Это будет работать, если ваша структура каталогов выглядит следующим образом: /public/css/style.css OR /public/js/query-1.11.1.min.js

Я пробовал это, но это не работает. На самом деле я удалил .htaccess и index.php из общей папки и поместил эти файлы в корневой каталог для запуска сайта без общедоступных.

Ankit 12.12.2018 16:57

Вам действительно не следует запускать свой сайт из корня, это открывает ваш файл .env

Jerodev 12.12.2018 17:03

У вас есть 3 возможности

Обновлено: я забыл Усадьба

При вырезании файлы .htaccess и index.php должны указывать общую папку в качестве пути. Попробуйте с этим:

css
{{ URL::asset('public/css/style.css') }}
js
{{ URL::asset('public/js/query-1.11.1.min.js') }}
Ответ принят как подходящий

Помощник asset() добавляет базовый URL к указанному вами пути.

Базовый URL-адрес - это расположение index.php (в данном случае: http: // локальный / mysite /).

Если вам не нужен index.php внутри / public, вам нужно будет использовать public / внутри вашего пути к активу, например:

asset("public/css/style.css")

То же самое и с файлами js, надеюсь, вы понимаете.

Это будет работать при локальной разработке, но не в производстве, когда он удалит public из url-адреса.

Clément Baconnier 12.12.2018 17:33

@cbaconnier не могли бы вы объяснить дальше? пожалуйста.

Sagar Gautam 12.12.2018 17:36

Мы можем предположить, что @Ankit просматривает localhost/mysite/public, поскольку index.php также находится в общей папке. На производстве вы хотите просматривать example.com, а не example.com/public. Вот почему laravel предоставляет несколько способов обслуживания без папки public, отображаемой в URL-адресе. Смотри мой ответ

Clément Baconnier 12.12.2018 17:40

@cbaconnier, это хорошо, я не слишком хорошо знаком с производственным сервером. Но вот в чем проблема с URL-адресами файлов css и js, поскольку в маршруте, который мы определяем в наших маршрутах, не будет публичного ключевого слова?

Sagar Gautam 12.12.2018 17:43

Вы указываете домен example.com в свою папку mysite/public, где находится index.php. Помимо этого, asset('public/css/... '); сгенерирует URL-адрес example.com/public/css/..., но поскольку ваш домен уже указывает на public, он будет сбрасывать 404, потому что ваши активы на самом деле находятся по адресу example.com/css/...

Clément Baconnier 12.12.2018 18:04

@cbaconnier, так какой будет строка кода в теге ссылки для css?

Y. Joy Ch. Singha 11.12.2019 08:23

@ Y.JoyCh.Singha вы можете протестировать на основе среды, но это будет работать только на вашей настройке. звонок по умолчанию - это asset('css/app.css'), и я сделал ответ для этого поста о том, как правильно настроить локальную среду.

Clément Baconnier 11.12.2019 08:37

вы напрямую разместили свои css и js, поэтому вам нужно попробовать эту функцию активов href = "{{ assets('')}}".

<link href = "{{ asset('css/invoice.css') }}" rel = "stylesheet" type = "text/css"/>

а также js

<script type = "text/javascript" src = "{{ asset('js/word.js') }}"></script>

создайте .htaccess в корневой папке и напишите это:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^localhost$ [NC]
    RewriteRule ^(.*)$ public/$1 [L,NC] 
</IfModule>

Добавить новую строку в файл .env

ASSET_URL=public

Я исправил эту проблему таким образом.

Другие вопросы по теме