更改整个应用程序的默认 URL 或路径?

Change default URL or path for whole application?

在我的本地开发中,我遇到了我的应用程序使用域的相对路径的问题,例如/css/style.css

这通常很好用,因为我可以在我的开发机器上配置虚拟主机,例如localhost.foo,这样相对路径解析为localhost.foo/css/style.css

在我目前的情况下,我无法编辑主机文件来设置开发域,因此域的相对路径不再起作用。我的开发 url 看起来像 localhost/projectfoo/public

为了使应用程序正常运行,它应该引用 localhost/projectfoo/public/css/style.css。基于它现在引用 locahost/css/style.css 的代码中的相对路径,显然它会找不到请求的文件。

有没有办法配置 laravel,在一种情况下使用 localhost/projectfoo/public 作为 URL 而在另一种情况下使用标准?

您始终可以在配置文件中添加新条目,比如在 config/app.php

// this is the one that comes with laravel
'url' => 'http://localhost',

// this is the one that you can define
'url_public' => 'http://localhost/something_else/public'

然后在您的视图中使用它,例如:

<link href="{{ config('app.url_public') }}/style/style.css" rel="stylesheet">

Laravel 有一个辅助函数 asset,它根据您的配置 app.url 值生成相对路径的完整 URL。

例如,如果 app.urlhttp://localhost

在您看来,输入 {{ asset("css/style.css") }} 和 Laravel 会将其转换为 http://localhost/css/style.css

因此,在您的情况下,您需要做的就是将 app.url 更改为 http://localhost/public,然后开始在您的视图中使用该 asset 方法而不是相对路径。

更好的是,将一个新的环境变量添加到您的 .env 文件中(确保也将其放入 .env.example 中)称为 APP_URL,例如

APP_URL=http://localhost

然后在config/app.php中设置为:

'url' => env('APP_URL'),

这样你只需要为每个环境设置一次