在laravel中使用强制url缓存网络路由

我在反向代理后面运行 Laravel 项目,这就是为什么我需要强制使用根 url 和方案:

URL::forceRootUrl($proxy_url);
URL::forceScheme($proxy_schema);

我已将此添加到我的顶部,/routes/web.php并且在运行之前它工作正常:

php artisan optimize

它在/bootstrap/cache 没有强制 url 和方案的情况下缓存路由,所以现在我所有的 url 都指向错误的根 url。

我试图将代码移动到/Providers/AppServiceProvider.php(bothregisterboot) 以使其在缓存路由时生效,但没有运气。

我必须手动删除路由缓存文件/bootstrap/cache才能使我的路由再次工作。

是否在缓存路由时使其生效?

编辑:我还尝试创建一个全局中间件,在其中执行强制 url 和模式。在缓存路由之前它再次工作正常,但是在运行php artisan optimize路由时再次不正确。


心有法竹
浏览 219回答 2
2回答

红糖糍粑

自 laravel 5.6 起删除了 php artisan optimize(源,源 2)

慕工程0101907

使用URL::forceRootUrl和URL::forceScheme似乎是使用反向代理的一种解决方法。干净的解决方案是在您的配置中添加受信任的代理。这篇文章完整地解释了这个功能。但归结为:使用App\Http\Middleware\TrustProxies中间件$proxies使用负载均衡器的 IP编辑中间件属性  protected $proxies = [        '192.168.1.1',        '192.168.1.2',    ];从以下代码中删除 /routes/web.phpURL::forceRootUrl($proxy_url);URL::forceScheme($proxy_schema);
打开App,查看更多内容
随时随地看视频慕课网APP