问题描述
我只是将 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
'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"/>