[英]Assets in the public directory not showing in Laravel 5
我在 Laravel 5.4 和 Laravel 5.5 的/public目錄中遇到資產問題。
在全新安裝的 Laravel 中,如果 URL 中沒有/public ,公共目錄中的任何內容都將無法工作。
當我運行php artisan make:auth
,創建的視圖應該是完美的,對吧? 好吧,我得到的是一個無樣式的頁面,只有當我使用 DOM 檢查器添加/public時才會看起來很漂亮,這樣我最終會得到:
<link href="http://localhost/l5.4/public/css/app.css" rel="stylesheet">
我在哪里可以更改設置,以便每次我想鏈接到資產時都不必在視圖中添加/public ?
您不必手動執行此操作,laravel 附帶了一個函數: {{asset('css/app.css')}}
可以直接訪問公共文件夾。
注意:
如果這不起作用,那么您很可能需要設置一個指向您/public
文件夾的虛擬主機。 您可以在 Apache 上的 vHosts 文件中執行此操作。
注2:
如果您在每個示例上使用共享主機,或者由於某種原因無法修改 vHost 文件,這里是您的解決方案。
首先,您必須將公用文件夾放在項目文件夾上方,並根據示例 public_folder 將其重命名,在其中,您必須放置公用文件夾的內容。
/public_folder
/your_project_folder
app/
databases/
...
其次,在 public 文件夾中,您會找到一個名為index.php
的文件,您必須對其進行如下修改:
require __DIR__.'/../your_project_folder/bootstrap/autoload.php';
$app = require_once __DIR__.'/../your_project_folder/bootstrap/app.php';
這意味着您正在從我們上面創建的公共文件夾中引用項目文件夾。
注3:
要告訴 laravel 將從我們公共文件夾的新位置引用資產函數,您可以將其添加到 index.php 中,在$app=require_once...
:
$app->bind('path.public', function() {
return __DIR__;
});
希望這是有道理的
這對我config\\app.php
:在config\\app.php
url
我輸入了public
目錄的完整 URL,如下所示:
'url' => env('APP_URL', 'http://localhost/l5.5/public'),
我還在.env
文件中輸入了與APP_URL
相同的 URL,因為這是我用於配置的內容。 顯然,在構造文件 URL 時, asset()
和類似函數附加到配置文件中的 URL
更新:這樣做的問題是我現在必須編輯Illuminate\\Foundation\\helpers.php
,我認為這是一個壞主意。 我認為不應該觸及核心文件。 現在而不是
function asset($path, $secure = null)
{
return app('url')->asset($path, $secure);
}
我正在使用
function asset($path)
{
return config('app.url'). '/' .$path;
}
有人可以告訴我這樣做的正確方法嗎?
在根文件夾中,將server.php重命名為index.php並將.htaccess文件從公共文件夾復制到根文件夾。 還可以共享您的目錄結構以顯示您的資產所在的位置。
就這樣做
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
這工作得很好。 當 Laravel 在服務器上運行時,主索引文件和所有資產都在“公共目錄”中。 所以css資產文件將以域名+ css/file.css而不是domain/public/css/file.css開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.