资产未引用公用文件夹(Laravel)

时间:2016-11-18 17:22:27

标签: php laravel

我的laravel项目中有公共文件夹,里面有一些js和css文件。

我正在使用资产功能,即使它引用了公共文件夹,我的文件也没有加载到页面上。

我正在使用此代码加载(它只有一个例子,还有更多文件):

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

在浏览器的控制台上,我发现了这样的事情:

  

无法加载资源:服务器响应状态为404(未找到)   http://localhost:8000/css/style.css

好吧,我试图恢复最后一次提交,但没有成功。试图更改为URL :: asset()函数,没有。尝试了以下链接:http://laravel.io/forum/09-17-2014-problem-asset-not-point-to-public-folder?page=1和成功。

请帮助一点?

谢谢!

8 个答案:

答案 0 :(得分:11)

我遇到了同样的问题。这是因为.htaccess文件从公共项目移动到项目的根目录,以便提供localhost/project而不是localhost/project/laravel。并且需要在资产中使用公共:

<link href="{{ asset('public/css/app.css') }}" rel="stylesheet">

或者,从/Illuminate/Foundation/helpers.php修改资产功能

if (! function_exists('asset')) {
    /**
     * Generate an asset path for the application.
     *
     * @param  string  $path
     * @param  bool    $secure
     * @return string
     */
    function asset($path, $secure = null)
    {
        return app('url')->asset("public/".$path, $secure);
    }
}

上述方法不是好方法。无论如何,如果有用于设置资产路径的配置,这将更容易。

答案 1 :(得分:3)

添加您的环境:

ASSET_URL =公共

ASSET_URL =公共/

ASSET_URL = /公共

您需要哪一个才能做到...

答案 2 :(得分:0)

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

试试这个

答案 3 :(得分:0)

试试这个

<link href="{{ asset('assets/css/style.css') }}" rel="stylesheet">

答案 4 :(得分:0)

保存并成功设置了.htaccesslike this)之后,您的方法将按您认为有效的方式起作用:

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

请注意,设置.htaccess后,所有客户端网址请求(对图像,JavaScript / CSS文件,JSON的请求)都会受到重写规则的影响。

另外请注意,看到更改后可能需要一段时间。缓存可能会干扰这些更改。因此,请确保您清除了Laravel缓存:

在您的命令行管理程序中分别运行以下命令:

php artisan cache:clear
php artisan route:cache
php artisan config:cache
php artisan view:clear

并确保在浏览器设置中暂时禁用缓存:

在Google Chrome浏览器中:打开开发工具> 打开“网络”标签>选中“禁用缓存”

其他浏览器:在线搜索操作方法。

答案 5 :(得分:0)

在您的 .htaccess 文件中添加此内容

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]

它会解决你的问题。确定

答案 6 :(得分:0)

就我而言,.env 我尝试过

ASSET_URL=public

两边斜线和单独,没有任何帮助以及所有相关的SO答案,然后打开我的旧项目 看到了。这终于对我有用了(当然是在清除视图和缓存旁边)

ASSET_URL="${APP_URL}"

我在谈论本地主机端

答案 7 :(得分:-2)

并确保在浏览器设置中暂时禁用缓存:

在Google Chrome浏览器中:

Open Dev Tools > Open the Network tab > Check "Disable cache".

其他浏览器:在线搜索操作方法。

这对我有用。好像以前加载CSS和JS的内容在缓存中,直到发布之前,新的CSS和JS才加载