Laravel 相对路径在本地主机上未按预期工作
Laravel relative paths not working as expected on localhost
我只是为我的本地主机使用 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
然后,问题是当我使用那个变量,比如说,link 到 public/js
中的一个 .js 文件时,生成的路径是
http://localhost/Users/user_name/Local%20Sites/site_1/public
...当然是无效的,因为正确的路径确实是
http://localhost/site_1/public
我确定我在做一些愚蠢的事情,但我太愚蠢了,无法弄清楚它是什么! 当我明确解析这些路径时,我的网站可以正常工作,但是然后当然当我发布到我的网络主机时一切都会中断(使用绝对路径而不是相对路径)。
不要混合使用辅助函数 publich_path() 和 assets()。
您应该 link 您的 JS/CSS/Img 以下方式:
<script src="{{asset('js/main.js')}}"/>
Laravel 会将调用转换为
<script src="http://localhost/site_1/js/main.js"/>
我只是为我的本地主机使用 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
然后,问题是当我使用那个变量,比如说,link 到 public/js
中的一个 .js 文件时,生成的路径是
http://localhost/Users/user_name/Local%20Sites/site_1/public
...当然是无效的,因为正确的路径确实是
http://localhost/site_1/public
我确定我在做一些愚蠢的事情,但我太愚蠢了,无法弄清楚它是什么! 当我明确解析这些路径时,我的网站可以正常工作,但是然后当然当我发布到我的网络主机时一切都会中断(使用绝对路径而不是相对路径)。
不要混合使用辅助函数 publich_path() 和 assets()。
您应该 link 您的 JS/CSS/Img 以下方式:
<script src="{{asset('js/main.js')}}"/>
Laravel 会将调用转换为
<script src="http://localhost/site_1/js/main.js"/>