Laravel 相对路径在本地主机上无法按预期工作

问题描述

我只是将 Mac OS 的本机 apache2 服务器用于我的本地主机。在我的 httpd.conf 文件中,我设置了

DocumentRoot "/Users/user_name/Local Sites/"

...该目录包含我在本地工作的所有网站:

Users
 -user_name
  --Local Sites
   ---site_1
   ---site_2
   ---site_3
   ---site_4

因此,对于 site_1 的特定 Laravel 项目,我在 .env 中设置了以下内容

APP_URL=http://localhost/site_1

...再次在config/app.PHP

'url' => env('APP_URL','http://localhost/site_1'),

但是,当我尝试使用 Laravel 的相对路径构建器之一时,它包含了我定义为文档根目录和服务器本地主机的整个路径上方。例如:

public_path() = /Users/user_name/Local Sites/site_1/public

问题是,当我使用该变量链接public/js 中的 .js 文件时,生成的路径是

http://localhost/Users/user_name/Local%20Sites/site_1/public

...这当然是无效的,因为正确的路径确实是

http://localhost/site_1/public

我确信我在做一些愚蠢的事情,但我太愚蠢了,无法弄清楚它是什么!当我明确解析这些路径时,我的网站可以工作,但当然一切都会中断当我发布到我的网络主机时(使用绝对路径而不是相对路径)。

解决方法

不要混合使用辅助函数 publich_path() 和 assets()。

您应该按照以下方式链接您的 JS/CSS/Img:

<script src="{{asset('js/main.js')}}"/>

Laravel 会将该调用翻译成

<script src="http://localhost/site_1/js/main.js"/>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...