Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel:生产路径和本地路径之间的差异;需要使用公共服务吗/_Laravel_Path_Hosting_Font Awesome_Production - Fatal编程技术网

Laravel:生产路径和本地路径之间的差异;需要使用公共服务吗/

Laravel:生产路径和本地路径之间的差异;需要使用公共服务吗/,laravel,path,hosting,font-awesome,production,Laravel,Path,Hosting,Font Awesome,Production,我在生产过程中遇到了与Laravel的路径问题,而在本地一切都运行得很好 托管服务:Hostinger 拉威尔:5.8 这涉及使用的相对路径,要求在生产时在任何资源使用的路径中具有public/ 如果以CSS工作表为例,本地,我将使用以下代码: 在生产中,我必须为路径添加public/,否则无法检测到图纸: 现在,我使用一个全局变量(在控制器类中),如果应用程序正在生产中,则使用该变量,这样在我投入生产时就不必对代码进行任何更改: href=“{{asset($public_prod

我在生产过程中遇到了与Laravel的路径问题,而在本地一切都运行得很好

  • 托管服务:Hostinger
  • 拉威尔:5.8
这涉及使用的相对路径,要求在生产时在任何资源使用的路径中具有
public/

如果以CSS工作表为例,本地,我将使用以下代码:


生产中,我必须为路径添加
public/
,否则无法检测到图纸:


现在,我使用一个全局变量(在控制器类中),如果应用程序正在生产中,则使用该变量,这样在我投入生产时就不必对代码进行任何更改:
href=“{{asset($public_prod.css/style.css')}}”

但问题是,我必须将此变量放在所有资源(图像、CSS、JS…)上,否则,资源不会显示

此外,一些资源(如字体真棒字体)不会与CSS工作表一起加载,即使检测到该工作表,也只显示unicode矩形。我的解决方案并不完美

注意:我的应用程序在Heroku服务的生产环境中运行良好,而无需向资源路径添加
public/
,我不知道为什么在Hostinger服务上不一样…

多亏了MaartenDev

解决方案:

  • 在Laravel的根目录下编辑
    .htaccess
    ,并将所有内容替换为:

重新启动发动机
重写规则^(.*)$public/$1[L]
  • 在根目录下创建
    server.php
    的副本,并将其重命名为
    index.php

本地主机和生产将工作

您将把所有css和js以及其他库放在公用文件夹中。然后运行此代码,如果您想删除url中的公用文件夹,那么可以在helper.php文件中创建类似于编写此代码的函数asset($path,$secure=null){return app('url')->asset($public/“$path,$secure);}。如果我使用此解决方案,您的.htaccess在hostinger上工作时不工作吗?您的站点似乎只是因为
public
文件夹中有一个index.php
<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>