我在Laravel 5.4和Laravel 5.5的 / public 目录中遇到资产问题。
在Laravel的全新安装中,如果网址中没有 / public ,公共目录中的任何内容都无效。
当我运行php artisan make:auth
时,创建的视图应该是完美的,对吧?好吧,我得到的是一个没有样式的页面,当我使用DOM检查器添加 / public 时,它看起来很漂亮,所以我最终得到:
<link href="http://localhost/l5.4/public/css/app.css" rel="stylesheet">
我可以在哪里更改设置,以便每次要链接到资源时都不必在视图中添加 / public ?
答案 0 :(得分:2)
您不必手动执行此操作,laravel附带了一个函数:StartPage
这直接访问公用文件夹。
注意:强>
如果这不起作用那么你可能需要设置一个指向你{{asset('css/app.css')}}
文件夹的virtualHost。
您可以在Apache上的vHosts文件中执行此操作。
<强>注2:强>
如果您在每个示例中使用共享主机,或者由于某种原因而无法修改您的vHost文件,那么这就是您所拥有的解决方案。
首先,您必须将公共文件夹放在项目文件夹上方并按照示例public_folder重命名,在其中,您必须放置公用文件夹的内容。
/public
其次,在公共文件夹中,您将找到一个名为/public_folder
/your_project_folder
app/
databases/
...
的文件,您必须按如下方式对其进行修改:
index.php
这意味着您正在从我们上面创建的公共文件夹中引用项目文件夹。
<强>注3:强>
要告诉laravel将从公共文件夹的新位置引用资产功能,您可以在require __DIR__.'/../your_project_folder/bootstrap/autoload.php';
$app = require_once __DIR__.'/../your_project_folder/bootstrap/app.php';
之后将其添加到index.php:
$app=require_once...
希望它有意义
答案 1 :(得分:1)
这对我有用:
致url
config\app.php
我输入public
目录的完整网址,如下所示:
'url' => env('APP_URL', 'http://localhost/l5.5/public'),
我还在APP_URL
文件中输入了.env
的相同网址,因为这是我用于配置的内容。
在构造文件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;
}
有人可以告诉我这样做的正确方法吗?
答案 2 :(得分:0)
在根文件夹中将 server.php 重命名为 index.php ,并将 .htaccess 文件从公用文件夹复制到根文件夹。还要共享您的目录结构,以显示您的资产所在的位置。
答案 3 :(得分:0)
就这样做
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
答案 4 :(得分:0)
Private Sub txtItem_TextChanged(sender As Object, e as EventArgs) Handles txtItem.TextChanged
Me.btnAddItem.Enabled = Not String.IsNullOrWhitespace( Me.txtItem.Text )
End Sub
这很好用。当Laravel在服务器上运行时,主索引文件和所有资产都在“公共目录”中。所以css资产文件将以域名+ css / file.css而不是domain / public / css / file.css开头。