【问题标题】:Laravel relative paths not working as expected on localhostLaravel 相对路径在 localhost 上未按预期工作
【发布时间】:2021-05-06 05:31:36
【问题描述】:

我只是在本地主机上使用 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

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

【问题讨论】:

    标签: php laravel apache laravel-blade relative-url


    【解决方案1】:

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

    您应该通过以下方式链接您的 JS/CSS/Img:

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

    Laravel 会将调用翻译成

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

    【讨论】:

    • 谢谢,成功了!不过,你能再解释一下吗?正如我认为的那样,这个场景实际上就是辅助函数的用途......
    • 另外,有没有办法在 Javascript 中解析路径,这样我也可以保持这些相对?示例:我在全局导航 js 文件中加载了一些 JSON 文件,该文件比我的大多数刀片文件高一级,但在两级深的页面上中断(因为该文件需要 ../ 而不是 ./) .
    猜你喜欢
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 2014-05-02
    相关资源
    最近更新 更多