Я новичок в 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
Так может ли кто-нибудь помочь мне в этом вопросе?
Заранее спасибо.
@Ankit Если вы все еще находитесь в режиме разработки, я не вижу причины, по которой вы ненавидите public в URL-адресе? Вы можете создать виртуальный хост на своей машине и начать писать код. Когда вы начнете работать, вы можете просто указать своим доменом саму общую папку. Таким образом, вы никогда не получите public в URL-адресе вашего домена.
@ vivek_23 Спасибо за предложение. Теперь я снова помещаю .htaccess и index.php в общую папку, и теперь все работает. Еще раз спасибо.
@Ankit Добро пожаловать. Теперь, по соображениям безопасности, поместите все свои папки, кроме папки public, за пределы вашего public_html и отредактируйте public/index.php, указав правильный путь для $app и т. д.






ДЛЯ 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 из общей папки и поместил эти файлы в корневой каталог для запуска сайта без общедоступных.
Вам действительно не следует запускать свой сайт из корня, это открывает ваш файл .env
У вас есть 3 возможности
php artisan serve в своем проекте и просмотрите
http: // локальный: 8000 см. Локальный сервер разработкиОбновлено: я забыл Усадьба
При вырезании файлы .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-адреса.
@cbaconnier не могли бы вы объяснить дальше? пожалуйста.
Мы можем предположить, что @Ankit просматривает localhost/mysite/public, поскольку index.php также находится в общей папке. На производстве вы хотите просматривать example.com, а не example.com/public. Вот почему laravel предоставляет несколько способов обслуживания без папки public, отображаемой в URL-адресе. Смотри мой ответ
@cbaconnier, это хорошо, я не слишком хорошо знаком с производственным сервером. Но вот в чем проблема с URL-адресами файлов css и js, поскольку в маршруте, который мы определяем в наших маршрутах, не будет публичного ключевого слова?
Вы указываете домен example.com в свою папку mysite/public, где находится index.php. Помимо этого, asset('public/css/... '); сгенерирует URL-адрес example.com/public/css/..., но поскольку ваш домен уже указывает на public, он будет сбрасывать 404, потому что ваши активы на самом деле находятся по адресу example.com/css/...
@cbaconnier, так какой будет строка кода в теге ссылки для css?
@ Y.JoyCh.Singha вы можете протестировать на основе среды, но это будет работать только на вашей настройке. звонок по умолчанию - это asset('css/app.css'), и я сделал ответ для этого поста о том, как правильно настроить локальную среду.
вы напрямую разместили свои 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
Я исправил эту проблему таким образом.
Попробуйте использовать "{{asset ('css / custom.css')}}"